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

如何基于标签或任务拆分Locust性能测试的图表曲线

问题说明

使用Locust对自研Java Web服务API开展压测时,已在压测脚本中通过@task注解拆分不同测试用例,同时添加@tag注解做维度标记,测试脚本示例如下:

from locust import HttpUser, task, tag
import json

class ProfileTest(HttpUser):
    @tag('base')
    @task
    def base(self):
        payload = {"msisdn": "6289000000"}
        headers = {'content-type': 'application/json'}
        self.client.post("/api/v1/profile/base", data=json.dumps(payload), headers=headers)

    @tag('generic')
    @task
    def generic(self):
        payload = {"msisdn": "6289000000"}
        headers = {'content-type': 'application/json'}
        self.client.post("/api/v1/profile/generic", data=json.dumps(payload), headers=headers)

启动Locust执行测试后,基础运行状态指标展示正常,但结果图表中未展示按标签、任务维度拆分的统计曲线,需要实现分维度的曲线展示。

实现方案

首先明确:Locust原生@tag注解的核心作用是筛选需要执行的任务集合,本身不会自动作为统计聚合维度,默认Web UI的聚合图表只会按请求URL做自动分组,要实现按标签/任务维度拆分曲线,可选择以下几种方案:

  • 方案1:给请求添加name参数指定分组名(优先推荐)
    这是成本最低的实现方式,不需要额外依赖或自定义开发,只要在每个self.client请求调用中传入name参数,显式指定和任务/tag对应的分组名称,Locust就会自动按name值做指标聚合,在统计表格、结果图表中生成对应维度的拆分曲线。
    修改后的请求代码示例:
    # base任务对应的请求
    self.client.post(
        "/api/v1/profile/base", 
        data=json.dumps(payload), 
        headers=headers,
        name="tag:base [用户基础信息查询]"
    )
    
    # generic任务对应的请求
    self.client.post(
        "/api/v1/profile/generic", 
        data=json.dumps(payload), 
        headers=headers,
        name="tag:generic [用户通用信息查询]"
    )
    
    修改后重新运行测试,即可在Charts页签看到对应分组的RPS、响应时间、失败率拆分曲线。
  • 方案2:启动时通过标签参数筛选执行任务
    如果需要单独观测某一类标签的测试结果,可以在启动Locust时通过--tags参数指定要执行的标签,例如执行locust -f your_locust_file.py --tags base时,Locust只会运行标记了base标签的任务,此时生成的所有统计结果、曲线都对应该标签维度。如果需要观测多个标签的拆分结果,还是需要配合方案1的name参数实现。
  • 方案3:通过事件钩子自定义标签维度统计
    如果脚本中任务量级大,不想逐个给请求加name参数,可以通过Locust提供的事件钩子实现自定义分组统计:监听请求完成事件,读取当前执行任务绑定的tag信息,手动按tag维度记录请求指标,即可将tag维度的统计数据接入Locust原生的统计模块,生成对应曲线。

注意:不要混淆标签筛选和统计分组的逻辑,原生标签能力不直接关联统计维度,所有自定义维度的统计都需要显式指定分组规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:30:49