locust性能测试:使用task装饰器,设置用户行为操作的占比

2021-09-27  本文已影响0人  HC2

场景:
在一个软件的功能中,存在某些功能用户的操作频率比较高,有些功能操作频率比较低,在一个模拟用户真实操作的场景中,我们可以使用@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

上一篇 下一篇

猜你喜欢

热点阅读