postman+newman+jenkins接口自动化

选择postman的原因很简单,开源,上手快,操作简单,可参考的帖子也多,短期内可以做出成果,配合newman和jenkins部署在服务器上后也可以定时执行并且发送邮件给相关人员,同样也能达到自动化的目的;当然有时间的化还是建议自己写代码测试,毕竟相对来说更灵活,没有工具的局限性,也更能培养测试人员的代码思维能力!

首先拿到接口文档,如果项目组没有接口文档那便自己使用抓包工具一个个去查,推荐charles; 废话不多说,直接上图

如果你的脚本是json格式:选择body,raw格式,右侧选择语言格式

这里选择json

如果你的脚本是h5-form

回参的格式如下:

这上面圈出来的每个信息都是需要关注的,依次是返回的正文内容,cookies,头部信息及断言的结果,因为自动化接口之所以叫自动化,是你不需要一个个接口去查看返回结果是否正确,而是根据你的断言去判断结果,最后你只需要在执行报告里查看pass或fail的接口即可;右侧是服务器状态码,这个需要注意,200只是意味着你的服务器工作是正常的,但并不意思返回的接口信息就一定是你想要的,比如你想请求一个不存在的页面,那么返回404才是你想要的结果 ;time接口返回时间,通常做为一个接口性能的参考,超过1.5s就需要关注下,size返回的大小;

这个是test里的断言:这个断言不对应上面的接口,只是选择了一个相对有参考意义的test

有些接口有上下关系的依赖或者你需要校验接口信息返回的正确和一致性,比如我们在这个接口获取到了学校的名称get school name,获取token也是一样的道理(ps右侧圈起来的是postman的一些现成的断言方法,点击即可自动生成语句,有兴趣的自己研究下)

//我今天回头再看自己写的笔记,发现好像不太能给人提供帮助,说明太少了...,我现在补充下,上面那个图片,依次是:

校验返回里是否有上述的文本

校验返回里是否有200的状态码

转换返回的格式为jsondata以便识别,建议都加上

校验返回是否有0000的状态码,因为我们的程序是用0000来表示返回成功

响应的超时时间不超过600ms

后面if的那一堆,应该只有中间那句有用,设置环境变量(如果返回的body有多个节点时,需要明确指向是哪个节点,例如content[0])

var data = postman.getResponseHeader("Authorization");//获取返回的header里的数据--新的程序里把校验的authorization写到了header里,之前是直接在body里返回的;算是多了一种获取返回的方式吧
pm.environment.set("Authorization",data); 把header里的值设置为环境变量,这样在下次的请求里就可以把这个authorization做为参数放到请求的header里了

这个是去校验上一个接口获取到的学校名称是否和下个接口返回的一致--对比结果,当初这句话怎么写花了我很长时间研究~~无奈

然后我们说下参数化,前面可能也会看到,我有把localtest的地方圈起来,此处的环境是变量,localtest 是测试环境地址,pretest则是预发环境地址,如果我们要运行测试环境,只需要把环境选择为localtest即可,所有的请求地址前面都会自动读取这里设置的baseurl地址,这样也就达到了脚本的重用性,在预发环境的时候你就不必再重新编写一份了,只需要切换环境去读取预发的baseurl地址即可;还是不懂的自行百度

好啦,然后是运行你的集合,点这里会新打开一个runner的窗口

然后我通常是这么设置,循环一次,反正不是测试性能,延迟300毫秒,防止个别接口返回较慢,有依赖关系的接口可能会获取不到上个接口的返回导致失败的;

完事你就可以查看运行的接口了,此处你就可以看到添加断言的好处了,结果一目了然,红色不通过的单独点开看看

如果你想单独调试某个接口,点击左上角的菜单view--show postman console,打开这个窗口后再点击你要调试的接口,此时这个窗口会展示详细的入参和返回及其它信息,目前我主要是用它来检查我的参数化是否生效

居然写了这么长,我都要吃饭了;说下设置定时运行的吧,点击你的集合右侧的...,看到了吧,monitor,打开它,怎么设置一目了然,不再缀述

运行时间及环境,每次运行完会发送邮件,注意,这里只有失败的情况下,即断言不通过的时候才会发

postman的部分讲完了,可能还有很多其它功能没有讲到,主要是因为我没用到,有兴趣的童鞋自己研究;

下面是newman,其实一开始一直搞不清newman有什么用,感觉很鸡肋,页面又不酷炫;等我做完所有的接口想要把他完全自动化,并且能发送邮件给相关人员的时候,我才真正明白了点它的用处,且往下看

http://www.cnblogs.com/weizhideweilai/p/9801003.html  参考这个帖子先安装nodejs,在我写这个帖子的时候,我用的版本是,之前安装的是4还是5忘了,运行提示出错,具体啥错忘了,这就是不及时写博客的坏处~~反正升级后运行正常;安装nodejs的好处就是你可以用npm install -g newman 这一行简单的命令去下载newman, 然后npm install -g newman-reporter-html,我下载失败,希望你们能成功!

然后从postman上export你的集合文件到本地,下载你的环境变量到本地,然后在cmd窗口运行这一行命令,第一个C盘路径读取的是刚刚下载的集合,后面的-e是指运行environment变量, 后面D盘是报告生成的路径

newman run C:\Users\24661\Desktop\test_presidentAPP.postman_collection.json -e C:\Users\24661\Desktop\localtest.postman_environment.json --reporters html --reporter-html-export  D:\html01.html

报告的样子就是这样,还是不错的(我刚刚前面好像说我html报告格式下载失败,哈哈,不用管它,可能后来被我坚持不懈弄好了)

最后是集成jenkins

新建一个自由风格的项目,其它的随便百度下写写,这里圈起来的是两个你刚刚下载到本地的文件,集合和环境变量,前面是你放在服务器上的路径

定时构建:https://blog.csdn.net/zzy1078689276/article/details/77520441/

  在【配置】页面中,下拉到【构建触发器】,在这里有两个可选选项,分别是“Build periodically”和“Poll SCM”,它们的特点如下:

  • Build periodically

  无论SVN中数据有无变化,均执行定时化的构建任务

       poll SCM:有变化就执行

执行完后发邮件给相关人员:

有一个小技巧,在“构建后操作”里添加钉钉插件,使用钉钉机器人通知到群,这里里的URL当前jenkins的地址,构建完后会有结果通知到群里,用户可以直接点击构建结果查看详情,比较方便

构建完群里收到的通知:

点击构建结果可以直接在console output查看详情:

完结撒花,想到再补充

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章