本项目是一整套使用 Jmeter+Ant+Python 完成接口自动化测试的解决方案;特别是多系统的测试任务执行,要比网上的教程方便的多。
功能:
实现:
生成的测试报告:
1、Jmeter 和 Ant 部署参考网上教程,主要介绍测试报告模板修改和 build.xml 文件
测试报告模板是在 jmeter 自带模板的基础上修改的,主要修改详见
res
文件夹中的report
截图,说明如下,其他小的修改这里不赘述,可使用文档比较工具自行比较查看,也可在线文档比较 ;(1) 截图中标注的修改 1 和修改 5,因为默认模板带有 2 个 png 的静态文件,生成测试报告时必须带上这 2 个静态文件,否则测试报告页面不好看,因此,需要去掉这 2 个静态文件;
(2) 截图中标注的修改 2,测试报告一般重点关注测试失败的用例,因此,需要把测试失败的用例展示在前面;
(3) 截图中标注的修改 3,把标题改成中文,因为测试报告会发给较多的人;如果你在外企工作,可以改成英文,但是相对应的脚本中的正则表达式也需要修改;
(4) 截图中标注的修改 4,添加了一个空的span
标签,用于添加自定义的内容,提高发送的测试报告邮件的可读性;
(5) 其他未标注出来的修改点,主要是默认模板没有我想看到的数据,把一些没有展示的数据展示出来,把一些 “没用的” 数据隐藏起来,以及一些样式的修改;build.xml 文件如下,具体配置已详细说明。强调:为了方便测试报告统一管理,也为了能够自动发送邮件,所有系统的 build.xml 中的测试报告路径必须是同一个文件夹
2、克隆 repository
git clone https://github.com/leeyoshinari/ATI_Jmeter.git
3、测试用例放置
(1) 所有测试用例放在一个统一的文件夹中,例如
testCase
文件夹;
(2) 针对不同系统的不同测试用例,可单独再放入一个文件夹中管理,例如:百度的测试用例放在baidu
中、百度的 BVT 测试用例放在baidu_bvt
中、腾讯的测试用例放在tencent
中;
(3) 每个系统的测试用例文件夹中,都需要放一个配置好的build.xml
文件;注意:所有系统的测试报告路径必须是同一个文件夹;
(4) 测试用例文件夹具体结构如下:
强烈建议文件夹及文件名称使用英文
为什么要按照上面的要求放置测试用例?这样放置方便执行测试任务,通过 get 请求http://ip:port/run/baidu
就可以执行百度的测试用例,请求http://ip:port/run/baidu_bvt
就可以执行百度 BVT 的测试用例。
4、修改配置文件 config.conf
(1) 线程池大小,建议设置 1 就够了;如确实调度较多测试用例的执行,可酌情增加;
(2) 测试用例路径和测试报告路径,建议使用绝对路径;其中测试报告路径应和build.xml
文件中的路径保持一致;
(3) 如接口自动化脚本维护在 git 上,可配置 git 本地仓库路径,每次执行任务前,自动从 git 上拉取最新版本,默认拉取主分支;前提是已经 clone 到本地了;
(4) 邮件发送配置,请确认 SMTP 服务配置正确;邮箱登录密码配置,请在sendEmail.py
文件中第 48 行设置,如果密码不想让其他人看到,请将该 py 文件进行编译,或者直接将这个 repository 打包,具体打包方法,请往下看;
5、运行
Linux:
nohup python3 server.py &
Windows
python server.py
6、打包
经过前 5 步,如果该 repository 可以启动,且执行测试任务成功,则可以进行打包,使用 pyinstaller 进行打包。
pyinstaller 安装自行查找教程,须确保安装正确,否则打包会报错,下面直接进行打包:
(1) 进入 ATI_Jmeter 文件夹,执行命令:
pyinstaller server.py -p schedule.py -p logger.py -p config.py -p sendEmail.py -p testing.py --hidden-import logger --hidden-import schedule --hidden-import config --hidden-import sendEmail --hidden-import testing
(2) 打包完成后,在当前路径下会生成 dist 文件夹,进入 dist/server 即可找到可执行文件 server;
(3) 将配置文件 config.conf 拷贝到 dist/server 文件夹下,并修改配置文件;
(4) 如需要部署在其他服务器上,可将 dist/server 整个文件夹拷贝到其他服务器,启动 server
nohup ./server &
7、CI/CD,以 Jenkins 为例,在 Jenkins 构建后操作中增加一个 get 请求,请求的 url 为http://IP:PORT/run/系统名称
,此处系统名称应和 testCase 用例文件夹中的对应的系统名称保持一致。
8、如果你所在的项目还没有用到 CI/CD,或者项目本身有较多配置项,每次手动更改配置重启项目后,也想自动执行测试任务;亦或是你不想配置 CI/CD,则需要执行客户端;
进入 client 文件夹,将脚本和配置文件拷贝到项目所在的服务器上,运行即可,也可以按照步骤 6 的方式进行打包。
修改配置文件 config.conf:
(1) 系统名称必须和测试用例文件夹中的名称保持一致,例如可配置成
baidu
;如需测试多个系统,名字用英文逗号,
隔开;
(2) 系统端口号即系统占用的端口号;如需监控多个系统的端口,端口用英文逗号,
隔开;
注意:如测试多个系统,系统名称的排序和系统端口的排序必须保持一致
1、如需部署 client,部署的服务器必须支持netstat
命令,以便根据端口号查进程号;仅支持 Linux 系统;
2、已经测试的版本:Jmeter-5.2.1、Ant-1.10.7