from locust import HttpLocust, TaskSet, task,events
import queue
from random import randint
class UserBehavior(TaskSet):
def on_start(self):
try:
data = self.locust.queueData.get() # 获取队列里的数据
print(data)
except queue.Empty:
# 队列取空后,直接退出
print('no data exist')
exit(0)
print('actually user and password is {} '.format(data['username']))
self.mobile = data['username']
password = "e10adc3949ba59abbe56e057f20f883e"
param = {"mobile": self.mobile, "password": password}
headers = {"Content-Type": "application/json", "app_id": "101"}
with self.client.post('https://xxx-xxx.xxx.com/xxxxxx', json=param, headers=headers) as response:
if response.status_code == 200:
self.token = response.json()["result"]["access_token"]
self.header = {
"access_token": self.token
}
print("========================================================登录",self.mobile)
@task(3)
def test1(self):
url = 'https://xxx-xxx.xxx.com/xxxxxx'
param = {
"limit":5,
"offset":0
}
with self.client.get(url,params=param,headers=self.header,catch_response = True) as response:
if response.json()['code'] == 0:
response.success()
else:
response.failure('Failed!')
@task(1)
def test2(self):
'''用户执行下一页操作,占总操作次数的五分之一'''
url = 'https://xxx-xxx.xxx.com/xxxxxx'
param = {
"limit": 5,
"offset": 5
}
with self.client.get(url, params=param, headers=self.header, catch_response=True) as response:
if response.json()['code'] == 0:
response.success()
else:
response.failure('Failed!')
@task(1)
def test3(self):
'''用户执行下一页操作,占总操作次数的五分之一'''
url = 'https://xxx-xxx.xxx.com/xxxxxx'
param = {
"limit": 5,
"offset": 10
}
with self.client.get(url, params=param, headers=self.header, catch_response=True) as response:
if response.json()['code'] == 0:
response.success()
else:
response.failure('Failed!')
class WebsiteUser(HttpLocust):
host = 'https://test-xxxx.com/'
task_set = UserBehavior
queueData = queue.Queue() # 队列实例化
for count in range(0,2): # 循环数据生成
data = {
"username": str(13729546445 + count)
}
queueData.put_nowait(data)
min_wait = 1000
max_wait = 1000
注意 队列的 queue.Queue() 数量必须大于或者等于最大并发数,否则最多并发数不准确
网友评论