Locust使用手册--非Web UI下运行Locust

9 篇文章 0 订阅
6 篇文章 1 订阅

非Web UI下运行Locust

可以通过使用指令--headless-u/--users以及-r/--spawn-rate的组合完成非Web UI下运行Locust:

locust -f locust_files/my_locust_file.py --headless -u 100 -r 5
[2022-11-30 10:41:10,947] .../INFO/locust.main: No run time limit set, use CTRL+C to interrupt.
[2022-11-30 10:41:10,947] .../INFO/locust.main: Starting Locust 2.13
[2022-11-30 10:41:10,949] .../INFO/locust.runners: Ramping to 100 users using a 5.00 spawn rate
Name              # reqs      # fails  |     Avg     Min     Max  Median  |   req/s failures/s
----------------------------------------------------------------------------------------------
GET /hello             1     0(0.00%)  |     115     115     115     115  |    0.00    0.00
GET /world             1     0(0.00%)  |     119     119     119     119  |    0.00    0.00
----------------------------------------------------------------------------------------------
Aggregated             2     0(0.00%)  |     117     115     119     117  |    0.00    0.00
(...)
[2022-11-30 10:44:42,484] .../INFO/locust.runners: All users spawned: {"HelloWorldUser": 100} (100 total users)
(...)

即使在headless模式下,你也可以在测试运行时改变用户数。按w增加1个用户,按W增加10个用户。按s移除1个用户,按S移除10个用户。

设置测试运行限制时间

如果希望为测试指定一个运行时间,可以通过-t/--run-time参数:

$locust -f --headless -u 100 --run-time 1h30m
$locust -f --headless -u 100 --run-time 60 # 默认单位是秒

时间一到Locust就会停止运行。时间的计算是从测试开始计算的(不是从用户数爬坡加载完成后才计算的)。

允许任务在关闭时完成任务的迭代

默认情况下,Locust会立即停止任务(甚至不会等待请求完成)。如果你希望运行所有正在运行的任务都完成他们的迭代,可以使用-s/--stop-timeout <seconds>参数。

locust --headless --run-time 1h30m --stop-timeout 10 # 延迟10秒后在执行停止

在非Web UI下运行Locust分布式

如果希望在非Web UI下运行Locust分布式,当开始启动master节点时要指定--expect-workers参数来指定worker节点的连接数量。然后在开始测试之前,master节点会等待所有worker节点连接完毕后才开始。

控制Locust进程的退出代码

默认情况下,如果Locust程序一旦有失败的示例,将会给出一个退出码1(使用-exit-code-on-error可以改变这个行为)。
你可以通过设置Environment实例的process_exit_code值来手动控制测试用例脚本中的退出码。这在将Locust作为自动化/定期测试运行时特别有用,例如作为CI管道的一部分。
下面示例,如果满足以下任何条件,则将退出代码设置为非零:

  • 超过1%的请求失败
  • 平均响应时间大于200毫秒
  • 95%的响应时间大于800毫秒
import logging
from locust import events

@events.quitting.add_listener
def _(environment, **kw):
    if environment.stats.total.fail_ratio > 0.01:
        logging.error("Test failed due to failure ratio > 1%")
        environment.process_exit_code = 1
    elif environment.stats.total.avg_response_time > 200:
        logging.error("Test failed due to average response time ratio > 200 ms")
        environment.process_exit_code = 1
    elif environment.stats.total.get_response_time_percentile(0.95) > 800:
        logging.error("Test failed due to 95th percentile response time > 800 ms")
        environment.process_exit_code = 1
    else:
        environment.process_exit_code = 0

注意,这段代码可以放在locustfile.py中,也可以放在locustfile中导入的任何其他文件中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值