Locust如何实现参数化?

一、背景

我们在测试或者注册的时候,想要的得到不同的结果,这时我们就要用的参数化,比如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'

 

觉得有用的话麻烦点赞一下吧谢谢


posted @ 2024-03-20 16:47  yongheng999  阅读(369)  评论(0)    收藏  举报