You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Locust性能测试设置校验目标,指标不达标时自动触发构建任务失败

Locust内置校验功能说明

Locust 本身已经内置了符合你需求的阈值校验能力,不需要手动解析测试报告来实现构建失败的逻辑,常用的实现方式有两种:

方式1:命令行参数快速配置(无需修改测试代码)

Locust 2.8及以上版本提供了开箱即用的阈值校验参数,直接在启动命令中添加对应规则即可,测试运行结束后如果不满足阈值会自动返回非0退出码,触发构建任务失败。
示例启动命令:

locust -f 你的测试脚本路径.py --headless -u 并发用户数 -r 每秒启动用户数 -t 测试运行时长 \
--check-avg-response-time 200 \
--check-fail-ratio 0.005 \
--check-rps 100

参数说明:

  • --check-avg-response-time [阈值]:校验平均响应时间不超过指定值(单位ms)
  • --check-fail-ratio [阈值]:校验请求失败率不超过指定值(取值范围0~1,0.005对应失败率≤0.5%)
  • --check-rps [阈值]:校验测试结束时每秒请求数不低于指定值

如果你的校验规则都是这类通用指标,用这个方式最方便,不需要修改任何测试代码。

方式2:自定义事件钩子实现复杂校验

如果你有更个性化的校验规则(比如指定接口的分位响应时间阈值、特定时间段的请求量要求等),可以用Locust的test_stop事件钩子实现,这个事件会在所有测试执行完成、聚合统计数据生成之后触发,完全基于全量聚合数据做校验,不会侵入单个测试方法的逻辑。
示例代码如下,直接添加到你的Locust测试脚本中即可:

from locust import events
import sys

@events.test_stop.add_listener
def validate_test_result(environment, **kwargs):
    # 获取全量测试聚合统计数据
    total_stats = environment.stats.total
    
    # 示例1:校验平均响应时间不超过200ms
    if total_stats.avg_response_time > 200:
        print(f"[校验失败] 平均响应时间超出阈值: 当前{total_stats.avg_response_time}ms,要求≤200ms", file=sys.stderr)
        environment.process_exit_code = 1
    
    # 示例2:校验请求成功率不低于99.5%
    success_rate = (total_stats.num_requests - total_stats.num_failures) / total_stats.num_requests * 100
    if success_rate < 99.5:
        print(f"[校验失败] 请求成功率低于阈值: 当前{success_rate:.2f}%,要求≥99.5%", file=sys.stderr)
        environment.process_exit_code = 1
    
    # 示例3:校验95分位响应时间不超过300ms
    if total_stats.get_response_time_percentile(0.95) > 300:
        print(f"[校验失败] 95分位响应时间超出阈值: 当前{total_stats.get_response_time_percentile(0.95)}ms,要求≤300ms", file=sys.stderr)
        environment.process_exit_code = 1

修改完测试脚本后正常启动运行即可,不满足校验规则时会自动返回非0退出码,CI/CD流程会自动识别为构建失败。

以上两种方式都完全适配你在docker-compose部署的CI环境中使用,不需要额外做报告解析的开发。

内容的提问来源于stack exchange,提问作者codesmith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:09:00