Python接口自动化测试项目实战

上篇文章讲到接口测试的工具 Postman:Postman功能介绍,那怎么实现接口测试的自动化呢?

脚本转为Python格式

当我们用 Postman 调通接口了,Postman 工具提供了接口测试的脚本自动化转化为其他语言的工具,我们点击右边的 code 按钮。

这里我把脚本转化为 Python3 的 requests 代码,我们把转化后的代码放在编辑器中直接运行,也可以达到同样调用接口的目的。

比如我在网上注册了一个查询天气的接口,送了 500 次免费的请求,必填字段有 2 个,cityname 和 key,复制到编辑器 Pycharm 中,有点个注意下,复制过来的 cityname 的中文值会变成 unicode 值,我们需要手动改成中文值才能成功调用接口返回正常的值。

数据驱动

什么是数据驱动呢,上面的代码只是一条正面案例,正常的测试中,我们还有考虑方方面面的反例,我们完全可以把案例写在 Excel 文件中,直接去文件中遍历读取数据,然后输入到接口入参变量中,实现一个接口的所有正反例的自动化测试。

关于数据驱动测试,之前分享过 Web 自动化测试的数据驱动教程的文章:Python自动化测试之数据驱动,读取文件数据,数据和脚本分离,方法是类似的,我们首先需要封装好读取和保存数据的方法。

读取和保存数据

读取和保存数据的方法我们新建一个 readexcel.py 文件,把读取和储存数据的功能封装在一个类中。

初始化数据

我们需要给出 excel 数据文件的文件名 filename,然后通过 load_workbook 方法去读取文件,读取到文件后再通过 sheet 的名称读取你要获取数据的表,我们把数据文件有值的最大列也获取出来,为了后面储存测试结果做准备。

读取数据

接下来建一个读取数据文件数据的方法,我们从 sheet.rows 里遍历所有行的数据,再去行数据的遍历单元格的数据,通过 cell.value 的方法把值取出来,返回出来,因为数据中第一行是标题,所以直接返回dataList[1:]

然后,我们校验返回的数据,如果和我们的预期一致的话,我们希望保存测试结果为:pass,如果不一致的话,我们希望保存为:fail。

储存数据

我们需要写一个储存数据的方法,需要输入开始的行号值 row,一般从第 2 行开始,第一行一般是表头标题,还需要输入我们定义好的文本,pass 或者 fail,方法中还获取了最大的列数,目的是在最大列数那里输入 pass 或者 fail,所以测试数据文件中,我们把测试结果这个列信息放在最后一列。

接口测试案例

接下来,我们看看接口测试的案例,案例写在 xlsx 后缀的 excel 文件里,只支持这种后缀的文件。

 

接口自动化测试脚本

接下来,我们就在刚才的脚本上进行完善了,我们还是用我们熟悉的 unittest 框架,导入上面写好的读取文件 readexcel 模块。

定义测试类并继承 unittest.TestCase 类,准备工作中,我们读取文件的数据并以 list 的形式返回。

接下来在 test 开头的测试脚本中,我们做循环遍历,把 cityename 和 key 的值改成从数据文件中读取,一行数据执行一次接口,执行后,把返回的信息转换为 json 格式,把响应中 json 里的 resultcode 数值和数据文件中的比较,相同则表示案例执行和预期结果相同,案例执行通过,pass,不同则案例执行失败,可能存在 bug 情况,需人工检查。

如果无法获取到响应结果中的 resultcode,则可能是接口没通或者服务器异常等原因导致,或执行 except 里的代码,也会把执行结果保存为 fail,同时打印执行失败的文案。

接口自动化执行结果

运行代码后再次查看案例,我们发现,执行结果全部自动填上了 pass。

这样,冒烟测试或者回归测试的时候,我们在吃饭或者休息的时候执行下代码,回到工作岗位时再看看案例的执行结果,是不是很高效,这样也许就不用 996 了。

 

文章为pk哥原创,我在我的公众号: Python 知识圈 上会分享更多心得体会,你也可以关注。

***版权申明:本文为 Python知识圈 pyzhishiquan.com 原创,没有Python知识圈书面授权,请勿以任何形式转载,摘编,复制或镜像。***

为您推荐

发表评论

电子邮件地址不会被公开。