队列方案进行参数化
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)