场景:
在一个软件的功能中,存在某些功能用户的操作频率比较高,有些功能操作频率比较低,在一个模拟用户真实操作的场景中,我们可以使用@task进行模拟
- 如一个商品购买流程:用户浏览商品列表、查看商品详情的频率应该是比查看个人订单的频率高
通过@task(n)装饰的方法为一个事务,方法的参数用于指定该行为的执行权重,参数越大每次被虚拟用户执行的概率越高,默认为1
from locust import HttpUser,TaskSet,between,task
import os,sys
headers = {"Content-Type": "application/json", "app_id": "101"}
class UserBehavior(TaskSet):
@task(5)
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(5)
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("用户查看订单列表")
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")
image.png
从报告可以看出单位时间内供请求了200次操作
每个功能的操作占比接近 5: 4:1
网友评论