jenkins+newman+postman实现api自动化

 最近需要用到自动化测试工具,调研加实践发现postman功能很强大呢。

1.postman自动化脚本实现

1.1 postman的test使用

1.1 postman的runner使用

1.3 postman的延迟

参考:https://blog.csdn.net/chenyangdream/article/details/104350828

当前需要单个接口的延迟,而非每个接口都加延迟

实现如下:

pm.test("check_result", function () {
pm.response.to.have.status(200);

/* 检查实例创建成功,处于active状态 */
var jsonData = pm.response.json();
var instance_info = jsonData.Data.Instances[0];

/* 获取延迟 */
var delay_10min = pm.environment.get("DELAY_10MIN");

setTimeout( ()=>{pm.expect(instance_info.DBInstanceStatus).to.eql("ACTIVE");}, delay_10min);

});

这里setTimeout的第一个参数()=>{pm.expect(instance_info.DBInstanceStatus).to.eql("ACTIVE");}   就是延迟10min后再执行的

总结:

实现方法:

setTimeout(  ()=>{语句;},  延迟毫秒数);

如果多个语句都延迟6000ms可以这样写:

setTimeout( ()=>{语句1; 语句2;语句3;} ,   延迟毫秒数);

2.postman命令行执行自动化用例

参考:

https://www.jianshu.com/p/f1bdfdabed10  

https://www.cnblogs.com/101718qiong/p/9837781.html

实践:

2.1按照指导,先下载好node.js, cnpm, newman

这个过程比较轻松,查看参考的链接。

2.2 export导出测试case到test目录

同样把依赖的环境变量导出到test目录,具体操作查看参考的链接。

2.3用命令行执行,newman run

newman run dbaas_param.postman_collection.json -e dbaas_73403574_xianglong.postman_environment.json  -r html

其中 run后面跟的是测试case,-e后面跟的是环境变量

-r是生成了html类型的报告。

 

⚠️在执行过程中报错:newman: could not find "html" reporter

原因是没有安装newman的html组件,需要执行命令sudo cnpm install -g newman-reporter-html,安装成功后即可执行newman run

2.4 测试报告

在当前目录下生成了Newman文件夹,打开html报告可以看到总的统计结果,以及各接口的执行结果:成功/失败,执行时间。

使用如下命令,可生成简装版的html报告

newman run dbaas_param.postman_collection.json -e dbaas_73403574_xianglong.postman_environment.json  -r html 

简装版的html报告长这个样子:

 

是不是感觉,报告的结果缺少点高亮效果?

好吧,然后发现还有精装版的报告,我们来安装一下精装版的组件:

sudo cnpm install -g newman-reporter-htmlextra

然后再来跑一遍测试用例:newman run dbaas_param.postman_collection.json -e dbaas_73403574_xianglong.postman_environment.json  -r htmlextra,cli

哇塞,果然不一样哎,命令跑完,界面出来一个整体效果图:

 我们再打开报告看看吧,好绚,果然是精装版,看得赏心悦目,一目了然呢:

 

 还能点开每个request查看请求参数,和body返回结果,真的好用极了!

3. postman+newman集成到jenkins

想用linux搭建postman+jenkins,实现定时跑自动化。

linux上搭建jenkins,参考:https://www.cnblogs.com/lxs1314/p/8567652.html

需要先安装java,maven,git

安装tomcat后,检查tomcat启动,并能够访问web

 

然后启动jenkins,访问jenkins:

[root@vm10-0-199-218 security]# cat /root/.jenkins/secrets/initialAdminPassword

83c641ff4f864f78b558129ccb4265cb

 根据提示,输入密码就好了

4. 延伸阅读-newman

诉求:newman跑出来自动化报告的名称,能否自定义?带着这个疑问,我们看看newman是怎么工作的。 

在环境上查看到newman和node的启动路径一样:

[root@vm10-0-199-218 node_modules]# which newman
/home/tools/node-v12.16.2-linux-x64/bin/newman
[root@vm10-0-199-218 node_modules]# which node
/home/tools/node-v12.16.2-linux-x64/bin/node

而且newman安装前,需要先安装node。那就说明newman依赖于node。都是用javascript写的。

进入到newman的lib目录,可以发现安装的自动化报告的包:newman-reporter-htmlextra

[root@vm10-0-199-218 node_modules]# ll
total 16
drwxr-xr-x 6 1001 1001 4096 Apr 26 21:18 newman
drwxr-xr-x 7 1001 1001 4096 Apr 26 21:25 newman-reporter-html
drwxr-xr-x 9 1001 1001 4096 Apr 26 21:26 newman-reporter-htmlextra
drwxr-xr-x 10 1001 1001 4096 Apr 9 00:59 npm

进一步在这个包里看看有没有生成html报告的代码,能否找到启发呢。

最后找到了生成报告的文件:/home/tools/node-v12.16.2-linux-x64/lib/node_modules/newman/lib/run/export-file.js  从这里看到写reporter文件时候,文件名第一个字符串是来自于参数,第二个字符串是生成的时间戳,末尾加上0

但是没想到怎么可以改写成自定义形式。这个问题先搁浅了。

原文地址:https://www.cnblogs.com/liurong07/p/12780856.html