【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

 

访问地址:http://localhost:8089/

 

启动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 测试时间,30s1m1h ;

  --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

posted @ 2022-11-29 16:47  Phoenixy  阅读(148)  评论(0)    收藏  举报