前言:
由于版本不同,当前版本不需要通过继承TaskSet类,再赋值在HttpUser(旧版本中的:HttpLoicust)类中,否则会报错空迭代器
TypeError: 'NoneType' object is not iterable
在命令行或者终端中运行
运行的命令:
locust -f xxx.py
运行成功之后就可以打开locust网页,在网页中进行场景配置
编写脚本的方法:
一、将任务直接写在HttpUser中
创建一个User类FalshUser, 继承HttpUser,然后定义主机IP地址、思考时间;
在类下面编写一个测试接口,跟我们使用request类似,有个别区别;
用@task的方式进行定义事务
接口方法内需要注意的点:
url只需要写路径即可,请求时自动拼接host;
发送请求的时候要用self.client.request去请求,并且增加method,和name两个入参,method就是请求方法、name就是接口名称;
self.client.request 它的发送请求跟我们常用的接口测试的request库非常类似,因为底层封装的就是request库
from locust import HttpUser, task, constant
class FlashUser(HttpUser): #HttpUser:控制用户发请求的频率、用户的思考时间、设置主机的IP地址、也可以定义任务
host = 'http://127.0.0.1:8080/' #host:被测系统,你要发送请求到哪个服务器
wait_time = constant(1) #wait_time:每次请求的间隔、停顿时间、思考时间 constant:为固定的思考时间,相当于固定定时器
@task #@task:@task用来标记哪个方法是任务,什么任务,我要做性能测试执行哪个接口
def login_test(self):
url = '/api/user/login'
data = {"userName":"xuyang@test.ai","password":"xy123456"}
headers = {"Content-Type": "application/json"}
self.client.request(method='POST', url=url, data=data, headers=headers, name='login登录')