通过Postman工具如何快速批量生成Python Pytest的测试脚本

  首先,在看这篇文章之前,希望大家先看一下上一篇文章,了解一下

项目重构后,如何利用Postman快速对比出新旧接口之间的差异 

在上一篇文章中,基于这样的背景下,要快速对比两个接口的返回结果的差异 ,而且是大批量的接口,断言是很麻烦的,要对js非常熟练,因此,当时考虑想换一个扩展性强一点的工具,当时就考虑用RobotFramework框架。

目前现有脚本都在postman中了,接下来要做的就是如何去快速的把postman中的接口测试用例都转成RF格式的用例呢?


    几经辗转,最终github上找到了一个别人开源的脚本,clone下来试了一下,仓库地址如下:

https://github.com/xNok/postman2robotframework


    该仓库的脚本可以将postman导出的json格式的collections的文件转换为一个指定模板的.py的python脚本。并且提供了cli的命令行去进行转换,也提供了转换的demo,也可以将这个作为一个library安装到自己的python安装目录下的site-packages中去,安装命令是:

    代码根目录下执行:
    python setup.py install

    具体的用法,github上都有写:通过Postman工具如何快速批量生成Python Pytest的测试脚本


    postman2robot 的命令要传2个参数,一个指定postman导出的json文件,

    另一个指定转换后的文件的目录。

    使用提供的demo文件转换后的效果如下:


    通过Postman工具如何快速批量生成Python Pytest的测试脚本


     相当于把postman的每个接口都定义成了一个python的函数,然后将python文件导入到RobotFramework框架中的话,每个函数相当于就是一个新的关键字。


    上面只是写到怎么样转换为RF的脚本,那么,怎么转换为pytest的用例脚本呢?

    其实只需要将/src/assets/library_template.py文件改一下格式。

    原来的内容如下:


    通过Postman工具如何快速批量生成Python Pytest的测试脚本


     要改成支持pytest的话 ,我们改一下class类名,然后在每个def函数名的前面或者后面加上test,再导入pytest的包,这样的话,就可以识别为pytest的用例了。然后在最后面再补充加一个if __name__ == '__main__'的脚本去执行pytest的用例,这样的话,就基本上完成了用例的转换工作。至于转换的模板文件中还需要加入什么可以自己去扩展。

        然后再本地搭建好allure的环境之后,可以集成pytest一起运行后出一个漂亮的报告出来。

    下图是我转换之后的脚本,对比重构前与重构后的接口对比结果的报告:


    通过Postman工具如何快速批量生成Python Pytest的测试脚本


    至于不知道怎么集成allure以及pytest的基本用法的,可以参考下面这篇文章:

    一篇文章为你揭秘pytest的基本用法


    脚本的运行和调试,需要有一定的python代码基础,我自己也在这个基础上调整了一些代码,如果你们对这个转换感兴趣,自己动手去尝试了之后遇到了问题的,可以添加好友一起探讨一下。

    上一篇:Python3.10版本的新特性介绍


    下一篇:Xmanager 远程桌面连接Redhat Linux(引用)