Locust是否内置支持顺序运行多测试及合并报告?
问题
我们有多组Locust测试用例,每组具备不同的负载需求(不同用户数、不同wait_time),需要在夜间顺序运行。目前我们通过单独调用的方式实现,示例如下:
# file ordering.py: class OrderingUser(HttpUser): wait_time=between(20,30) @task def order_normal(self):... @task def order_discounted(self):... # file catalogue.py: class CatalogueUser(HttpUser): wait_time=between(2,3) @task def search(self):...
调用顺序如下:
First invoke: locust -f ordering.py --users 3 --run-time 2h After it finishes, we invoke: locust -f catalogue.py --users 10 --run-time 2h And finally merge the reports into a single file
请问Locust是否对此提供内置支持(包括最终合并报告)?还是仍需通过外部方式进行调用与协调?
回答
1. 多测试用例顺序运行的支持
Locust没有内置的多测试用例顺序调度功能,无法直接在单个Locust进程中依次执行不同配置的测试任务。你必须通过外部工具或脚本实现顺序调用:
- 可编写Shell脚本,按顺序执行每个Locust命令,利用命令行的阻塞特性(上一个命令执行完毕后才会启动下一个);
- 也可用Python脚本,通过
subprocess模块依次启动Locust进程,等待进程结束后再触发下一个任务。
示例Shell脚本(适用于Linux/macOS):
#!/bin/bash # 执行第一个测试,指定CSV格式输出报告 locust -f ordering.py --users 3 --run-time 2h --headless --csv=ordering_report # 等待第一个测试结束后执行第二个 locust -f catalogue.py --users 10 --run-time 2h --headless --csv=catalogue_report
2. 报告合并的支持
Locust同样没有内置的报告合并工具,需要自行处理报告合并:
- 如果使用CSV格式输出报告(通过
--csv参数),可通过Python脚本读取多个CSV文件,合并数据后输出为单个文件。示例代码片段:
import pandas as pd # 读取两组测试的统计报告CSV ordering_df = pd.read_csv("ordering_report_stats.csv") catalogue_df = pd.read_csv("catalogue_report_stats.csv") # 添加标识列区分不同测试用例 ordering_df["test_case"] = "ordering" catalogue_df["test_case"] = "catalogue" # 合并数据并保存 merged_df = pd.concat([ordering_df, catalogue_df], ignore_index=True) merged_df.to_csv("merged_report_stats.csv", index=False)
- 如果是HTML格式的报告,合并逻辑会更复杂,通常建议先合并原始CSV数据,再基于合并后的数据重新生成可视化报告(或自行编写脚本实现)。
总结
所有测试任务的调度和报告合并工作,都需要通过外部脚本或工具完成,Locust本身不提供这类内置支持。
内容的提问来源于stack exchange,提问作者Pelit
相关产品推荐
相关产品推荐

