自动化工具 yapi 接口自动化与 jenkins 集成的探索之路

优雅的测试媛 · 2019年04月27日 · 最后由 zyanycall 回复于 2019年11月06日 · 4428 次阅读

先说说为什么叫做 “探索之路”,在 yapi 的官方使用文档中有这么一段话:

😓 😓 😓 就这么简单的一句话,未给出具体的集成方法。
所以就有了一番探索之路。
先说说如何在 yapi 上进行接口自动化测试,比较简单,官方文档中有。在准备好测试用例集合后,点击右上角的 “服务端测试”,会生成一串 url,

url 的格式如:https://<接口地址>/api/open/run_auto_test?id=146&token=4893f9f55d13af57f545acc2f2ee223fe99e84d9704134926174c55505d65615&mode=html&email=false&download=true
id 是你的测试用例集合的 id,mode、email、download 这 3 项是点生成前选择的,mode 是测试报告的格式,email 指是否发送邮件,download 为 false 时直接展示测试报告,为 true 时会以文件形式下载下来。

把这传 url 放在浏览器中直接执行,便可生成测试报告,如果选择输出格式为 HTML,测试报告如下图的样子:

注意:要在测试用例集合中开启结果校验,这样才有意义,就是加上 assert 断言,这个在官方文档有详细描述,不再啰嗦。

本地自动化跑通后,就可开始集成 jenkins 啦!jenkins 的基本使用方法不再赘述。
在这之前需要确认:yapi 的服务器和你的接口地址是通的。可以在部署 yapi 的服务器上先 ping 下请求的域名或者 ip。
在 jenkins 中新建 job,因为 yapi 生成的是一串 url,能想到的在 jenkins 中执行的 shell 命令就是用 curl,curl 请求那串 url 并且保存为 html 格式的测试报告。
在 “ADD BUILD STEP” 中选择 “执行 shell”,执行如下命令:
curl -o XXXReport.html "yapi 服务端测试生成的那串 url"
然后就可以构建啦,如果配置都正确的话,会比较幸运的成功啦,生成了 html 的报告。但是你会发现这个 html 并不美观,且不直观。
搜了下解决方法,在 job 的 Post-build Actions 项选择 “groovy postbuild”,然后加上一句脚本:System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
再次构建,你会发现测试报告和在浏览器中直接执行生成的报告是一样的格式。😀 开心。
如果在 jenkins 执行失败,可以先在 yapi 服务上直接执行 curl 命令,如果能成功,就说明 jenkins 的 job 配置有问题。

到这里的时候,我还是挺开心的,挺有成就感的,哈哈哈
不过,又面临了一个问题,怎么判断接口有失败呢。因为需要监控接口运行情况,失败时邮件通知。
自己一顿搜索,能想到的办法就是从 html 的测试报告中获取是否有 “全部通过” 的字样来判断,在 jenkins job 的 “ADD BUILD STEP” 中再加一句 shell,我用的是 grep -c 来判定测试报告中关键字。grep 的用法就不再赘述。大家有什么别的好的判定方法,也可在帖子下面回复。
jenkins 发送失败邮件也不再赘述,网上都可以查到。

到此,yapi 与 jenkins 集成就完成啦!😀 😀 😀

共收到 12 条回复 时间 点赞
优雅的测试媛 Yapi 集成 jenkins 问题,求大神指点 中提及了此贴 05月05日 15:29

比较好的探索

仅楼主可见
CNGTZ 回复

我写的很详细了,你是哪里没调通呢?

仅楼主可见
9楼 已删除

用 Jenkins 执行 shell 也是同样的情况,本机是 windows

仅楼主可见

这个 yapi 是可以输出 json 格式的,可以写一个 Python 或者 go 语言的脚本,通过请求获得的 json 来判断是否有用例不通过,应该算是一个很简单的脚本。

annylyf 回复

如果所有 case 测试通过,测试报告的上方是这样的字样:一共 XX 测试用例, 全部验证通过。 所以,可以用 grep -c 来反向判断有 case 失败的情况。其实就是取报告中的关键字,只要能判定用例成功或者失败就可以。也可以用别的判断方式。

不理解的一点是判断有失败的 case 的情况后,怎么结合到邮件和 Jenkins 自动发送的测试报告中😖

annylyf 回复

嗯,现在我只做到了有 case 失败时会发送邮件到测试同学那里,邮件内容看不到 yapi 生成的那个测试报告,还需要到 jenkins 上去看,这一点需要优化,有什么好的办法也欢迎回帖。😀

我正在写自己的测试平台,但我之前没接触过 yapi,然后今天看到 yapi 的时候,我都惊呆了,难道我真的造了个轮子吗😱 😱 😱
后面仔细看了下,还好还好,我的平台还好有自己的特色啊(比如集成了 Allure2 的测试报告吧,这需要我自己在代码中定制它,并不是直接使用 testNg 的集成之类的,而是相当于重新实现了一个集成依赖。当然这不是炫技,而是 Allure2 确实在测试报告领域,是未来,是趋势)。
yapi 是一个成功的产品,很多经验值得借鉴呀(导入导出不说了,主要是 wiki(稍微单薄)和每个接口的备注,公共的环境配置,还有楼主写的这一段和 Jenkins 集成的方式,整体的格式和提示消息都非常棒)。
yapi 也有一些不太好的地方,我就不说了。
yapi 也有一些接口测试常用的,却没有支持的,我也就不说了,毕竟是我自己平台的特性……
yapi 很成功,值得学习。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册