一、
-
on_start :每个虚拟用户在启动时都会调用该方法
-
on_stop 当虚拟用户用户停止运行(被终止)时调用
例如:我们在测试的下单功能的时候,首先要登录用户。
所以我们可以在测试类声明一个on_start方法。on_start方法内初始化登录操作,每个虚拟用户在启动时都会调用该方法进行登录操作,再进行下单操作.
当用户完成操作后,声明一个on_stop方法进行退出登录
from locust import HttpUser,TaskSet,between,task
n = 0
class UserBehavior(TaskSet):
def login(self):
global n
n += 1
print("%s个虚拟用户开始启动,并登录"%n)
def logout(self):
print("退出登录")
def on_start(self):
self.login()
@task(4)
def test1(self):
"""
用户浏览首页商品列表
:return:
"""
url = '/list'
param = {
"limit":8,
"offset":0,
}
with self.client.get(url,params=param,headers={},catch_response = True) as response:
print("用户浏览首页商品列表")
@task(6)
def test2(self):
"""
用户查看商品详情
:return:
"""
url = '/detail'
param = {
'id':1
}
with self.client.get(url,params=param,headers={},catch_response = True) as response:
print("用户浏览商品详情")
@task(1)
def test3(self):
"""
用户查看订单列表
:return:
"""
url = '/order'
param = {
"limit":8,
"offset":0,
}
with self.client.get(url,params=param,headers={},catch_response = True) as response:
print("用户查看订单列表")
def on_stop(self):
self.logout()
class WebsiteUser(HttpUser):
host = 'http://127.0.0.1'
tasks = [UserBehavior]
wait_time = between(1, 2)
if __name__ == '__main__':
os.system("locust -f ccc.py")
运行后停止:
1个虚拟用户开始启动,并登录
用户浏览首页商品列表
2个虚拟用户开始启动,并登录
用户浏览商品详情
用户查看订单列表
[2021-09-28 23:33:51,443] MacBook-Air.local/INFO/locust.runners: All users spawned: {"WebsiteUser": 3} (3 total users)
3个虚拟用户开始启动,并登录
用户浏览商品详情
用户浏览首页商品列表
用户浏览首页商品列表
用户浏览商品详情
用户浏览商品详情
用户浏览商品详情
用户查看订单列表
用户浏览商品详情
用户浏览商品详情
用户浏览商品详情
用户浏览商品详情
退出登录
退出登录
退出登录
每个虚拟用户启动只执行一次on_start和on_stop函数
网友评论