为了账号安全,请及时绑定邮箱和手机立即绑定

需要一种方法将变量从 User 类传递到 Locust 中的 TaskSet

需要一种方法将变量从 User 类传递到 Locust 中的 TaskSet

开心每一天1111 2022-12-06 16:24:20
我是蝗虫的新手,正在尝试编写负载测试。我的 Locust 用户的目的是通过调用 createItem API 来创建项目。在这种情况下,每个请求中的 item_id 应该是唯一的,因为它具有唯一的条件。这就是我所做的。import jsonfrom random import randintfrom locust import HttpUser, constant, SequentialTaskSet, taskfrom flow.helper import read_jsonclass 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?
查看完整描述

1 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

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


@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

            ...


查看完整回答
反对 回复 2022-12-06
  • 1 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号