引言
我们知道Jmeter可以用命令去运行脚本,叫做非GUI模式。而Locust同样也有非GUI模式,不过叫做no-web模式运行,windows系统下也是dos下执行命令。
命令详情
locust参数选项: -h, --help 帮助信息 -H HOST, --host=HOST 指定被测试的主机,如下格式: http://10.21.32.33 --web-host=WEB_HOST 指定运行 Locust Web 页面的主机. Defaults to '' (all interfaces) -P PORT, --port=PORT, --web-port=PORT 指定 –web-host 的端口,默认是8089 -f LOCUSTFILE, --locustfile=LOCUSTFILE 指定运行 Locust 性能测试文件,如 '../other.py'. 默认: locustfile --csv=CSVFILEBASE, --csv-base-name=CSVFILEBASE 以CSV格式存储当前请求测试数据.csv文件存放当前目录 --master 将locast设置为以该进程为主进程的分布式模式运行 --slave 将locast设置为以分布式模式运行,并将此进程作为从属进程 --master-host=MASTER_HOST 用于分布式负载测试的ocast master的主机或IP地址。仅在与一起运行时使用 --slave. Defaults to 127.0.0.1. --master-port=MASTER_PORT 要连接到该端口的端口由用于分布式负载测试的ocast master使用。仅在运行时使用--slave。默认值为5557。请注意,从服务器还将连接到此端口+1上的主节点。 --master-bind-host=MASTER_BIND_HOST locust主机应绑定到的接口(主机名、IP)。仅在与--master一起运行时使用。默认为*(所有可用接口)。 --master-bind-port=MASTER_BIND_PORT locust主机指定端口。仅在与--master一起运行时使用。默认值为5557。请注意,locast还将使用这个端口+1,因此在默认情况下,主节点将绑定到5557和5558。 --heartbeat-liveness=HEARTBEAT_LIVENESS set number of seconds before failed heartbeat from slave --heartbeat-interval=HEARTBEAT_INTERVAL set number of seconds delay between slave heartbeats to master --expect-slaves=EXPECT_SLAVES 在开始测试之前,需要连接多少个从属主机(仅 --no-web 使用). --no-web 禁用Web界面,然后立即开始运行测试。要求指定-c和-r. -c NUM_CLIENTS, --clients=NUM_CLIENTS 并发用户数. Only used togetherwith --no-web -r HATCH_RATE, --hatch-rate=HATCH_RATE 每秒生成用户的速率. 和--no-web一起使用 -t RUN_TIME, --run-time=RUN_TIME 在指定时间后停止, 如 (300s,20m, 3h, 1h30m, etc.). 和--no-web一起使用 -L LOGLEVEL, --loglevel=LOGLEVEL 日志等级(DEBUG/INFO/WARNING/ERROR/CRITICAL.默认INFO.) --logfile=LOGFILE 日志文件的路径。如果未设置,日志将转到stdout/stderr --print-stats 在控制台中打印统计信息 --only-summary 只打印摘要统计信息 --no-reset-stats [DEPRECATED] Do not reset statistics once hatching has been completed. This is now the default behavior. See --reset-stats to disable --reset-stats Reset statistics once hatching has been completed. Should be set on both master and slaves when running in distributed mode -l, --list 显示可能的locust类列表并退出 --show-task-ratio 打印locust类任务执行率表 print table of the locust classes' task execution ratio --show-task-ratio-json 打印locust类任务执行率的JSON数据 -V, --version locust版本
无Web-UI模式
在没有Web UI的情况下运行locust - 可以打开cmd 通过使用--no-web参数,
- -c指定要生成的Locust用户数
- -r每秒启动虚拟用户数
先cd到脚本当前目录,然后执行指令:
locust -f locust_batch_data.py --no-web -c 1 -r 1
备注:这里的脚本用的是上篇文章讲的,这里就不再重复了。
设置运行时间
如果要指定测试的运行时间,可以使用--run-time
locust -f locust_batch_data.py --no-web -c 1 -r 1 --run-time 10
或使用-t参数
locust -f locust_batch_data.py --no-web -c 1 -r 1 -t 10
运行时间单位,如果不写单位默认是s,也可以指定小时h,分钟m,可以参考以下时间格式
- 10s 10秒(不写单位默认s)
- 5m 表示5分钟
- 1h 1小时
- 1m30s 1分30秒
导出CSV格式报告
您可能希望通过CSV文件保存的Locus结果。在这种情况下,有两种方法可以做到这一点。
首先,使用Web UI运行Locust时,您可以在“下载数据”选项卡下点击下载CSV文件。
- Download request statistics CSV
- Download response time stats history CSV
- Download failures CSV
- Download exceptions CSV
如果是界面的话,就如下图所示:
也可以可以使用命令行志--no-web模式运行Locust,加上--csv=example参数保存前面两个CSV文件。
–csv=example:example为CSV文件名的前缀;可以自行命名,如:result_csv
locust -f locust_batch_data.py --no-web --csv=example -c 1 -r 1 -t 10
使用--csv=example会自动保存两个文件到当前脚本目录example_distribution.csv、example_stats.csv:
将example_stats.csv打开效果展示:
日志处理
Locust带有基本的日志记录配置,可以选择采用–loglevel和/或–logfile修改配置。如果要控制日志记录配置,则可以提供该–skip-log-setup标志,该标志将忽略其他参数。
参数说明:
--skip-log-setup:禁用日志记录设置。但是可以由python提供日志功能;
locust -f locust_batch_data.py --no-web --csv=example -c 1 -r 1 -t 10 --skip-log-setup
--loglevel:设置日志的级别;可以设置为 DEBUG/INFO/WARNING/ERROR/CRITICAL。默认的为info级别;简写为 -L
--logfile:日志文件的路径,如果不设置,则显示在命令提示界面:
打开locust.log文件,查看:
总结
locust非GUI模式运行已经讲完,对软件测试,自动化测试,测试开发及安全测试感兴趣的小伙伴,可以入群一起学习和讨论。