关于python+locust系列:
基于Python locust,实现自动化压测,这里直接介绍实践的情况,对于环境与安装等,请参考前一篇文章:【Linux】【压测】关于python实现性能自动化工具之Locust
首先大概说下本次实践的思路,主要就是分如下几个步骤:
1.环境安装,与待压测的数据、API准备;
2.代码编写,涉及到读取外部参数等;
3.压测执行,与运行结果查看,监控等;
下面,我按此3个步骤介绍:
1.环境安装,与待压测的数据、API准备;
由于之前项目需要,我本地安装有Python2、Python3两个版本,可以根据需要随时切换使用。
IDE,我本地也有两个工具:PyCharm、VSCode。本次基于VSCode测试。
Python2、Python3、PyCharm、VSCode这些的相关安装配置之类,基本没有什么,此不赘述。
首先需要准备好待压测的API、以及待压测的参数。
这里我先用一个基本的GET的做样例:
GET /api/rest/v1/en/haochuangrtest/query?number=1234567890@HAOCHUANG
参数的话,目前这个主要是number后面的 需要变化,我们可以根据需要通过脚本生成,或者直接从DB里面获取一些,并写入到txt中。
这一步的目标就是要首先保证API和参数本身可用,可访问,http请求可达。
不论是是哟个postman还是postwoman去测试都可以,只要API请求返回正确就可以了。
2.代码编写,涉及到读取外部参数等;
代码编写,我举个目前的样例如下:
test_haochuang_locust.py
from locust importHttpLocust, TaskSet, task, HttpUser, between'''D:\CODE\CODE_VSCode\HAO_VSCcode\HAO_AutoTest\LOCUST\HAO_Locust\LocustDemo> locust --host=http://localhost -f .\test_haochuang\test_haochuang_locust.py'''
classAdminLoadTest(HttpUser):
wait_time= between(5, 9)"""创建后台管理站点压测类,需要继承TaskSet
可以添加多个测试任务"""
@task(3)defget_status_more_HAOCHUANG(self):"""查询实例方法
:return:"""
rootdir= "D:\\CODE\\CODE_VSCode\\HAO_VSCcode\\HAO_AutoTest\\LOCUST\\HAO_Locust\\LocustDemo\\test_haochuang\\HAOCHUANG.txt"with open(rootdir,'r') as file_to_read:whileTrue:
line=file_to_read.readline()if notline:breakline= line.strip('\n')
self.client.get("https://www.cnblogs.com/haochuang/api/rest/v1/en/haochuang/query?number="+line)
file_to_read.close()
@taskdefget_status_one_HAOCHUANG(self):"""当任何一个task调度执行之前,
on_start实例方法会被调用
先登录
:return:"""self.client.get("https://www.cnblogs.com/haochuang/api/rest/v3/en/haochuang/query?number=26572316@HAOCHUANG")
classRunLoadTests(HttpUser):"""创建运行压测类"""task_set= AdminLoadTest
txt文件比较简单,里面就是测试数据,主要是在python中需要把路径制定正确,路径中的注意转义;
具体代码写好之后,我们可以运行:
PS D:\CODE\CODE_VSCode\HAO_VSCcode\HAO_AutoTest\LOCUST\HAO_Locust\LocustDemo> locust --host=http://localhost -f .\test_haochuang\test_haochuang_locust.py
然后,在浏览器中
3.压测执行,与运行结果查看,监控等;
Charts:
Failures:
Download Datas:
下载文件可见结果如下:
至于等待时间,以及压测其他参数调优,过程控制等,我下次再实践之后补充文档介绍。
待续