locust 参数化关联

队列方案进行参数化

from locust import HttpUser, TaskSet, task,between
import json,datetime
import queue
#定义一个队列,把准备的数据放进去
def GetData():
    s=queue.Queue(maxsize=0)
    for i in range(1,6):
         #往队列里面压入1,2,3,4,5
        s.put_nowait(i)
    return s
class MyLocust(TaskSet):
    @task()
    def post_test(self):
        url='/sum'
        data_=self.user.queueData.get()#self.user调用websitUser类里面的数据
        data={"a":2,"b":data_}
        with self.client.post(url,json.dumps(data),verify=False) as response:
             print(json.loads(response.content))#打印返回值
            response.success()
            assert response.status_code == 200  
        self.user.queueData.put(data_)#将刚刚取的数据重新丢进列队


class websitUser(HttpUser):
    tasks = [MyLocust]
    wait_time = between(1, 3)
    queueData=GetData()

if __name__ == '__main__':
    import os
    cmd="locust -f pages.py --host=http://www.baidu.com --web-host=127.0.0.1 "
    os.system(cmd)

on_start关联参数

from locust import HttpUser, TaskSet, task,between
import json,random
class MyLocust(TaskSet):
    def on_start(self):
        #模拟一次请求的返回值,假设每次返回值都不固定
        res=random.randint(10,15)
        self.res=res#将返回值挂在这个类上,在其他地方就能直接访问了
    @task()
    def post_test(self):
        url='/sum'
        data={"a":2,"b":self.res}
        with self.client.post(url,json.dumps(data),verify=False,catch_response=True) as response:
            print(json.loads(response.content))
            response.success()
            assert response.status_code == 200
class websitUser(HttpUser):
    tasks = [MyLocust]
    wait_time = between(1, 3)

if __name__ == '__main__':
    import os
    cmd="locust -f 关联参数.py --host=http://192.168.50.209:8009"
    os.system(cmd)
posted @ 2022-07-14 23:50  我是小菜鸡丫丫  阅读(127)  评论(0编辑  收藏  举报