一、背景
我们在测试或者注册的时候,想要的得到不同的结果,这时我们就要用的参数化,比如csv实现数据驱动,等等,那么在locust中我们如何实现参数化呢?
案例:
模拟三个用户注册账户,要求注册的账户不重复,使用参数化
二、实现逻辑
这里我们可以用读取本地csv的方式读取数据,并返回一个列表对象,然后我们遍历对象,并将内容放入队列中,
那么在接口传递的时候可以获取队列的内容进行传参
三、代码编写
'''
这里我们编写一个读取csv 文件的方法
'''
# 读取csv文件,返回列表
csv_content=[]
def readCsv(csvPath):
with open(csvPath,'r',encoding='utf-8')as file:
# 使用字典方式读取
data=csv.DictReader(file)
for item in data:
csv_content.append(item)
# print(csv_content)
return csv_content
'''
结合locust的参数化:
'''
from queue import Queue
from locust import task, between, HttpUser
import generate_utils
#数据不重复
q=Queue()
csv_data= generate_utils.readCsv("register.csv")
for item in csv_data:
q.put(item)
class DemoUser(HttpUser):
#每个用户都会先走on_start 方法
def on_start(self):
print('调用了on_start方法')
def on_stop(self):
print('停止执行')
@task(3)
def register(self):
data=q.get()
self.client.post('/regist',data=data)
wait_time=between(1,2)
host='http://127.0.0.1:8000'
觉得有用的话麻烦点赞一下吧谢谢
标签:如何,self,Locust,content,item,参数,csv,data,def From: https://www.cnblogs.com/yongheng999/p/18085597