4-多个User执行测试

一个locustfile中有多个User

from locust import task, HttpUser


class User01(HttpUser):
    weight = 3  # 权重
    host = 'https://www.baidu.com'

    @task
    def user_01_task(self):
        self.client.get(url='/', name='user_01_task')


class User02(HttpUser):
    weight = 1  # 权重
    host = 'https://www.qq.com'

    @task
    def user_02_task(self):
        self.client.get(url='/', name='user_02_task')

  • 两个User定义了host,运行时就可以不填host
  • 定义了weight,和上一节task设置到权重一样,运行时user分配比重按照3:1执行

  • 执行结果

使用--class-picker指定执行

  • 运行locust的命令使用--class-picker参数,启动web-ui时可以手动选择执行的UserClasses
$ locust -f locustfiles/multiple_user.py --class-picker 

  • 如果是no-ui模式下,也可以在命令中直接指定执行的UserClasses,例如
$ locust -f locustfiles/multiple_user.py --class-picker User02 User01 --headless -u 20 -r 20 -t 5s
[2023-07-28 12:17:00,956] HUAWEI-MateBook-X-Pro.local/INFO/locust.runners: Ramping to 20 users at a rate of 20.00 per second
[2023-07-28 12:17:00,957] HUAWEI-MateBook-X-Pro.local/INFO/locust.runners: All users spawned: {"User01": 15, "User02": 5} (20 total users)
  • 命令参数解释一下
    1. --headless no-ui模式执行,并且立即开始测试
    2. -u 指定运行最大并发用户数
    3. -r 每秒启动用户数
    4. -t 执行测试的时长

小结

  1. 一个locustfile中可以定义多个测试User类,默认执行比例都是1:1,可使用weight属性修改它们的执行比重
  2. 当一个locustfile中有多个User类,可以使用--class-picker命令参数来选择到底执行哪些User类来执行测试
  3. 这里提到了no-ui执行,因为一般到实际工作我们压测是在云服务器执行,locust一样提供了--headless命令来通过no-ui执行
  4. User类中给host赋值后,我们不需要在运行时再给locust设置host
  5. locust的更多使用命令参数,建议可以仔细阅读一遍,通过locust -h来查看
posted @ 2023-07-28 14:09  威力Kami  阅读(96)  评论(0编辑  收藏  举报