以下是惠测田老师的思路,我的问题是思路固化在了函数,没有将队列加入全局变量
1、加载CSV文件
import csv
from typing import Text, List, Dict
def load_csv_file(csv_file: Text) -> List[Dict]:
"""
csv_file文件格式举例:
email,password
65132090@qq.com,123456
65132091@qq.com,123456
返回的数据格式举例:
[
{'email':'65132090@qq.com','password':'123456'},
{'email':'65132091@qq.com','password':'123456'}
]
:param csv_file:
:return:
"""
csv_content_list = []
with open(csv_file, encoding='utf-8') as fp:
reader = csv.DictReader(fp)
for row in reader:
csv_content_list.append(row)
return csv_content_list
if __name__ == '__main__':
csv_content_list = load_csv_file('./data/user.csv')
for item in csv_content_list:
print(item.get('email'))
print(item.get('password'))
2、并发登陆
from locust import HttpUser, task
import queue
import loader
# 全局参数化,适合类似于注册业务
q = queue.Queue()
csv_list = loader.load_csv_file('./data/user.csv')
for item in csv_list:
q.put(item)
class FecMallUser(HttpUser):
host = 'http://appserver.huice.com'
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.q = queue.Queue()
def on_start(self):
csv_list = loader.load_csv_file('./data/user.csv')
for item in csv_list:
self.q.put(item)
wait_time = constant_throughput(3)
@task(1)
def open_index(self):
headers = {'accept': 'application/json'}
with self.client.get('/cms/home/index?page=3&total=200',
catch_response=True,
name='首页',
headers=headers) as response:
if response.status_code != 200:
response.failure('失败了')
params = {'page': 3, 'total': 200}
with self.client.get('/cms/home/index',
catch_response=True,
params=params,
name='首页',
headers=headers) as response:
if response.status_code != 200:
response.failure('失败了')
@task
def login(self):
item = q.get()
data = {'email': item.get('email'), 'password': item.get('password')}
response = self.client.post(url='/customer/login/account', data=data)
d = response.json()
# self.q.put(item) # 确保数据循环使用
3、CSV文件内容
email,password
65132090@qq.com,123456
65132091@qq.com,123456
65132092@qq.com,123456
65132090@qq.com,123456
65132091@qq.com,123456
65132092@qq.com,123456
65132090@qq.com,123456
65132091@qq.com,123456
65132092@qq.com,123456
65132090@qq.com,123456
65132091@qq.com,123456
65132092@qq.com,123456
65132090@qq.com,123456
65132091@qq.com,123456
65132092@qq.com,123456