• locust 权重


    设置权重

    在locust中,所有的测试场景都是继承HttpUser类,每个测试场景都是HttpUser类的子类。

    在HttpUser类的子类中,通过task调用对应的测试用例 。

    TaskSet是任务的集合,每次执行场景时,Locust都会先从Task中随机挑选一给任务并执行,可以通过@task(x)来指定权重,设置那个测试用例的概率会更大一点。

    1. from locust import HttpUser, TaskSet, task
    2. # 定义用户行为(测试用例)
    3. class TestCase(TaskSet):
    4. @task(1) # 设置权重为1
    5. def index(self):
    6. self.client.get('/HelloWorld') # 访问路径
    7. @task(3) # 设置权重为3
    8. def index2(self):
    9. self.client.get('/HelloWorld2') # 访问路径
    10. @task(2) # 设置权重为2
    11. def index3(self):
    12. self.client.get('/HelloWorld3') # 访问路径
    13. # 设置场景
    14. class WebsiteUser(HttpUser):
    15. tasks = [TestCase] # 将测试用例添加到测试套件中
    16. min_wait = 1
    17. max_wait = 2
    18. host = 'http://127.0.0.1:5000'

     PS:通过图表分析reqs,设置了权重越大的接口压测次数就越多

    因为locust默认是随机执行taskset里面的task的。

    index,index2,index3 权重分别设置为1:3:2

    所以实际执行测试用例的次数会是:index2 > index3 > index1

    顺序执行测试用例

    1. from locust import HttpUser, task, SequentialTaskSet # 导入equentialTaskSet
    2. # 定义用户行为(测试用例)
    3. class TestCase(SequentialTaskSet):
    4. @task()
    5. def index(self):
    6. self.client.get('/HelloWorld') # 访问路径
    7. @task()
    8. def index1(self):
    9. self.client.get('/HelloWorld2') # 访问路径
    10. # 设置场景
    11. class WebsiteUser(HttpUser):
    12. tasks = [TestCase] # 将测试用例添加到测试套件中
    13. min_wait = 1
    14. max_wait = 2
    15. host = 'http://127.0.0.1:5000'

    设置 SequentialTaskSet后,分析图表各个接口的请求数差别不大

    设置标签分组

    task不止一个时,可以通过@tag给task打标签进行分类,在执行测试时,通过--tags name执行指定带标签的task。

    1. from locust import HttpUser, TaskSet, task, tag # 导入tag
    2. # 定义用户行为(测试用例)
    3. class TestCase(TaskSet):
    4. @tag("tag1") # 设置标签名为tag1
    5. @task(1)
    6. def index(self):
    7. self.client.get('/HelloWorld') # 访问路径
    8. @tag("tag3") # 设置标签名为tag3
    9. @task(2)
    10. def index2(self):
    11. self.client.get('/HelloWorld2') # 访问路径
    12. @tag("tag1") # 设置标签名为tag1
    13. @task(2)
    14. def index3(self):
    15. self.client.get('/HelloWorld3') # 访问路径
    16. # 设置场景
    17. class WebsiteUser2(HttpUser):
    18. tasks = [TestCase] # 将测试用例添加到测试套件中
    19. min_wait = 1
    20. max_wait = 2
    21. host = 'http://127.0.0.1:5000'

    locust -f .\test2.py --host=http://127.0.0.1:5000 --headless -u 1 -r 1 --run-time 1m --tags tag1

    执行含有 tag1 标签的 测试用例

  • 相关阅读:
    HTTP1.0,1.1,2.0
    java实现线程安全的三种方式
    java8概要
    go-GC垃圾回收
    Python图像处理丨图像的灰度线性变换
    centos系统编译openssl和openssl-lib的rpm安装包
    知识增广的预训练语言模型K-BERT:将知识图谱作为训练语料
    Docker-compose安装
    android MediaStore.ACTION_IMAGE_CAPTURE 调用照相机返回图片太小问题解决方法
    用关键词搜索店铺列表详情
  • 原文地址:https://blog.csdn.net/qq_26086231/article/details/125463307