【python】locust模块_性能测试
简介
Locust是一款易于使用的分布式负载测试工具,完全基于事件,即一个locust节点也可以在一个进程中支持数千并发用户,不使用回调,通过gevent使用轻量级过程(即在自己的进程内运行)
安装
pip install locust # pip install locustio
查看是否安装成功/版本
locust -v
编写测试用例
1 创建==locust.HttpUser== 之类 2 为待测试用例添加@locust.task 装饰器 3 使用self.client 发送请求 4 指定 wait_time 属性
命令行启动
locust -f locustfile.py --headless -u 500 -r 10 --host 123 -t 1h5m
框架是通过命令locust运行的,常用参数有:
-H:指定测试的主机地址(注:会覆盖Locust类指定的主机地址)
-f:指定测试脚本地址(注:脚本中必须包含一个Locust的衍生类)
--no-web:不启动web网页,而是直接开始运行测试,需提供属性-c和-r
-u:并发的用户数,与--no-web一起使用
-r:每秒启动的用户数,与--no-web一起使用
-t:运行时间(单位:秒),与--no-web一起使用
-L:日志级别,默认为INFO 调试命令: locust -f **.py --no-web -u 1 -t 1
执行
# 命令行运行 locust -f xxx.py
启动Locust 要使用上述Locust文件运行Locust,如果该文件名为locustfile.py且位于当前工作目录中,则可以运行: $ locust 如果Locust文件位于与locustfile.py在不同的子目录/或者文件名不一样,则使用参数-f+文件名: $ locust -f locust_files/my_locust_file.py 要在多个进程中运行Locust,我们可以通过指定--master: $ locust -f locust_files/my_locust_file.py --master 然后我们将启动任意数量的从属进程: $ locust -f locust_files/my_locust_file.py --slave 如果要在多台机器上运行Locust,则在启动从属服务器时还必须指定主服务器主机(在单台计算机上运行Locust时不需要,因为主服务器主机默认为127.0.0.1): $ locust -f locust_files/my_locust_file.py --slave --master-host=192.168.0.100 还可以在配置文件(locust.conf或~/.locust.conf)或以LOCUST_前缀的env vars中设置参数 例如:(这将与上一个命令执行相同的操作) $ LOCUST_MASTER_HOST=192.168.0.100 locust 注意:要查看所有可用选项,请键入:locust—help
运行方式
web 本地运行,可在网页端输入总的并发数量和每秒递增的线程数量,
if __name__ == '__main__': os.system("locust -f pressure_start.py --web --csv=example --loglevel=INFO --logfile=test.log --host=http://localhost:18813")
no-web 在服务器上运行 ,需要跟随c、r、t等参数;
即:-c 总的并发数量;-r 指定并发加压速率(每秒多少个用户);-t 测试时间,30s、1m、1h ;
--csv:保存运行结果
--loglevel:日志等级
--logfile:日志文件
--host:域名
if __name__ == '__main__': os.system("locust -f pressure_start.py --no-web -c 20 -r 20 -t 100s --csv=example --loglevel=INFO --logfile=test.log --host=http://localhost:18813")
错误提示
提示:ModuleNotFoundError: No module named“xxx”
将xxx所在文件路径添加到sys.path
如模块demo路径:E://pycode/demo
sys.path.append(os.path.abspath("..")) print(os.path.abspath(".."))
<Tips:即将E://pycode路径添加到sys.path中>
locust官方文档参考:https://cloud.tencent.com/developer/article/1594240
入门详解参考:https://blog.csdn.net/sugela8/article/details/125362026
如果万事开头难 那请结局一定圆满 @ Phoenixy
-------------------------------------------------------------------------------------
浙公网安备 33010602011771号