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

如何在Locust图形界面自定义# Requests和# Failures列数值?

解决Locust场景级统计中自定义# Requests和# Failures列的问题

可以实现自定义这两列的数值,核心思路是通过监听Locust的统计报告事件,在统计数据生成时替换对应场景条目的请求数和失败数指标。以下是具体实现步骤:

1. 预先统计场景内的请求数和失败数

在用户类中维护变量,记录当前场景的总请求数和失败数,执行场景内每个请求时实时更新:

class MyUser(HttpUser):
    def __init__(self, parent):
        super().__init__(parent)
        self.scenario_total_requests = 0
        self.scenario_total_failures = 0
        self.count = 0
        self.user_id = 0

    def run_scenario(self):
        # 遍历执行场景内所有请求
        for req_info in self.scenario_requests:
            self.scenario_total_requests += 1
            try:
                # 执行请求并收集响应数据
                response = self.client.get(req_info["url"])
                # 累加响应时间、长度等逻辑
            except Exception as e:
                self.scenario_total_failures += 1
                # 记录错误信息

        # 触发场景级统计事件
        scenario_name = f"Scénario 2, number : {self.count}, id:{self.user_id}"
        events.request.fire(
            request_type="Full_scenario",
            name=scenario_name,
            response_time=full_response_time,
            response_length=full_response_length,
            exception=errors
        )

        # 将场景统计数据存入全局字典,供后续修改统计条目使用
        global_scenario_stats[scenario_name] = {
            "total_requests": self.scenario_total_requests,
            "total_failures": self.scenario_total_failures
        }

2. 监听统计报告事件,修改对应指标

定义全局字典存储场景统计数据,通过events.stats_report事件监听统计报告生成,匹配到场景条目后替换请求数和失败数:

# 全局字典,存储场景名称与对应统计数据的映射
global_scenario_stats = {}

@events.stats_report.add_listener
def update_scenario_stats(stats, **kwargs):
    # 遍历所有统计条目
    for entry in stats.entries:
        # 筛选自定义的场景级统计条目
        if entry.request_type == "Full_scenario" and entry.name in global_scenario_stats:
            scenario_data = global_scenario_stats[entry.name]
            # 替换请求数和失败数
            entry.num_requests = scenario_data["total_requests"]
            entry.num_failures = scenario_data["total_failures"]
            # 重新计算失败率等衍生指标
            entry.failure_rate = entry.num_failures / entry.num_requests if entry.num_requests > 0 else 0

注意事项

  • 必须保证场景名称name的唯一性,否则会出现统计条目匹配错误。
  • 修改后的数值会在统计报告刷新时生效,Web UI的实时统计需要等待下一次刷新周期才能显示更新后的数据。
  • 若需要更实时的展示,可结合events.request_success和events.request_failure事件维护统计数据,核心修改逻辑保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:33:17