首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要一种在蝗虫中将变量从用户类传递到TaskSet的方法

需要一种在蝗虫中将变量从用户类传递到TaskSet的方法
EN

Stack Overflow用户
提问于 2020-05-26 06:22:58
回答 1查看 1.5K关注 0票数 3

我是蝗虫新手,我正在尝试编写负载测试。我的Locust用户的目的是通过调用createItem API来创建一个项。在这个场景中,每个请求中的item_id应该是唯一的,因为它有一个唯一的标准。

这就是我所做的。

代码语言:javascript
复制
import json
from random import randint

from locust import HttpUser, constant, SequentialTaskSet, task

from flow.helper import read_json


class WebsiteUser(HttpUser):
    """
    User class that does requests to the locust web server running on localhost
    """
    host = "http://localhost:8080/api/"
    wait_time = constant(3)

    @task
    class SequenceOfTasks(SequentialTaskSet):
        item_id = randint(100, 9999)

        @task
        def create_item(self):
            request = read_json('resources/create_item.json')
            request['item-id'] = self.item_id
            response = self.client.post('createItem', json.dumps(request),
                                        headers={'Content-Type': 'application/json'})
            assert response.status_code == 200

第一个请求成功,它成功地创建了一个条目。但是后面的所有请求都失败了,在应用程序服务器的日志中,我可以看到它正在尝试使用相同的item_id创建项。有任何方法可以在WebsiteUser类中动态生成值并将其传递给SequenceOfTasks吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-26 07:52:20

这个问题不是一个确切的答案,但我通过在方法中移动随机逻辑,使这段代码在没有冲突的item_ids的情况下工作。就像:-

代码语言:javascript
复制
@task
    class SequenceOfTasks(SequentialTaskSet):
        self.item_id = None
        @task
        def create_item(self):
            request = read_json('resources/create_item.json')
            self.item_id = randint(100, 9999)
            request['item-id'] = self.item_id
            ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62015871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档