保姆级教程Stept7--接口联调组合测试进阶之脚本优化
目录
保姆级教程Stept8--接口测试框架的准备与实现(持续更新中)
okk,很高兴又和大家见面了,前面讲到保姆级教程Stept6--接口联调组合测试,今天持续为大家更新保姆级教程保姆级教程Stept7--接口联调组合测试进阶之脚本优化
承接上文,我们通过接口联调业务分析、画流程图、脚本编写到执行,完成了接口联调的组合测试。但是我们发现其实我们的脚本编写有大量重复性的代码,本期我们学习如何优化我们的测试脚本,以及通过文件导入完成联调脚本的批量测试并导出测试报告。
并思考能否使其达到不修改脚本,只修改导入测试文件来完成批量测试及导出测试报告?
让我们通过不断的改进我们的测试脚本一步步探究吧
1.接口联调测试V1.0
下图是我们上一期课程内容 保姆级教程Stept6--接口联调组合测试 所完成的接口联调测试V1.0版本,主要通过定义一个测试类,五个测试方法,最终通过对类的实例化和对方法的调用来实现我们的接口联调测试,有不了解的同学可以翻翻上一期的内容。
2.接口联调测试V2.0
在优化脚本前,我们先观察一下我们接口联调测试V1.0中定义的测试方法有没有什么共性。
通过观察我们发现前3个方法中都需要传入 url、userinfo并获取到我们需要的响应结果然后进行比对,那么我们能否设计一个通用方法,将这些传入的参数作为变量,对脚本进行优化呢?
那我们接下来试试看
2.1脚本优化流程图
我们先画一个流程图作为设计底稿,在写代码的时候可以按照流程图进行逐步优化。
首先我们定义了一个用户忘记密码V2.0的测试类,然后重新定义了一个通用的测试方法userinterface_test(),这个方法需要传入‘url’,‘userinfo’,‘expresult’,‘interfacename’ 这四个参数,并通过主函数main定义这些数据,最后调用类的对象,完成测试数据和脚本的分离。
2.2代码实现
话不多说老规矩--上代码
上面是脚本主体,下面是脚本测试数据
脚本的分层设计,实现测试脚本和测试数据分开维护,方便后续导入测试文件及导出测试结果。
2.3执行结果
接下去我们看看优化之后的脚本执行结果
执行结果跟我们优化脚本之前的结果一致,从优化的结果来看,目前直观的看就是代码量相较接口联调测试V1.0脚本减少了20行左右,维护测试数据更方便,只需要修改脚本数据的值,不需要逐个测试方法进行修改。
接下来我们思考一下如何在不同的python文件中,调用测试脚本。
3.接口联调测试V3.0
当我们在工作中需要多个测试开发工程师同时进行不同测试脚本的开发时,就需要在不同的python文件中对封装好的接口测试模板类进行调用。
老规矩!
我们可以直接通过from导入语法将我们写好的类进行导入,导入之后就可以直接对我们的测试方法进行调用。
4.接口联调测试V4.0
接下来我们尝试解决脚本参数化的问题,使得后续的测试执行,可以通过导入测试数据文件解决,而不用再修改我们的测试脚本。
4.1读取维护好的接口测试文件
之前我们提到过如何读取测试文件,我们先要读取维护好的测试文件,然后再对文件内容进行参数化,忘了的同学可以到我写的 保姆级教程Stept3--批量导入文件及导出测试结果 进行回顾
我们先维护好我们的测试文件
目前维护了3组没有接口依赖的接口的测试数据,我们进行脚本编写并打印,查看是否读取成功
可以看到正常读取到了我们维护好的测试数据,但是细心的同学会发现我们只读取了不同接口中相同的参数,所以接下去要解决得问题是:不同参数的读取问题,这是参数化的重点和难点
4.2不同参数的读取问题
首先我们先维护好测试文件中不同接口的参数,为了方便大家观察,我把所有参数的下标都列出来了,后续我们要通过测试文件数据中的下标,来读取各个接口不同数量的参数,对脚本进行参数化。
我们可以看到这3个接口的参数分别是6、2、2 ,并且在下标6中做好了数量记录,这是为了方便我们设计脚本,下面解析一下循环读取不同参数数据的过程:
1.为所有待读取数据加上下标方便观察数据
2.参数读取范围为下标7-18,利用python循环语法读范围定为(7,19)
3.以 j(参数个数) 和i(读取的第一个参数) 作为不同接口参数的变量进行循环读取参数
4.最后得到我们的for循环结果 for i in range(7,2*j+7,2)
4.3脚本实现
老规矩!
我们可以看到参数化之后脚本的编写大大优化了,仅30行左右的代码且无需再定义测试类和测试方法后,在下方额外加入测试数据参数,而是可以通过维护导入文件直接修改测试数据。
4.4执行结果
ok,我们再来看看执行结果
我们看到我们的脚本执行结果,已经能正确的读出我们需要的数据,但是有2条测试数据测试失败了,提示我们的用户名已存在。
通过校验数据库我们发现用户名和邮箱确实已经注册使用过了,那我们把已注册的数据删除后重新执行一次看看结果。
okk 这次执行的结果完全符合我们的预期,测试通过!
但是每次测试需要通过pycharm查看执行结果是不是有点麻烦?没关系,保姆给你想到了
接下来我们完成最终优化,把执行的响应和测试结果导出为测试报告!实现效率max!!
5.接口联调测试V5.0
首先我们回忆一下如何把测试执行结果写入文件中,忘了的同学可以回顾一下我第三期讲到的文件导入和导出的内容 保姆级教程Stept3--批量导入文件及导出测试结果
我们简单做个例子:把 testresult={'接口名':'登录接口'}写入csv文件中
可以看到结果是写进去了,但是跟我们预期的内容不太一样。
接下去我们进行修正
通过for循环,调用 items 方法 取出 k=key ,v=value 这2个键、值,并通过逗号','隔开
查看csv文件,完成了我们需要的键、值写入,下面进行整个测试报告的写入
5.1用'W'方式进行测试报告的写入
想要把返回的实际结果及测试结论写入测试报告,我们得先定义一个字典数据
然后将返回的响应结果转化为字符串类型,再把返回结果和测试结论放入字典数据中,最后返回定义好的字典数据 resultdata 在实例化的时候作为变量传入
file=open('testresult.csv','w')# 打开名为testresult.csv的文件,覆盖内容并写入
区别于 'a'的追加写入, 'w'代表覆盖写入,我们通过实例化调用查看写入的结果
OK,完成了我们需要的接口实际返回值 和测试结论的写入
下面我们看看 用'a'方式写入会有什么区别
5.2用'a'方式进行测试报告的写入
我们重新定义了一个测试方法,通过'a' 方式进行测试报告的写入,由于是追加写入,为了方便我们查看,每次写入时增加了换行符 '\n'
下面我们看看第一次执行的测试执行结果
跟用‘w’方式写入的执行结果一样,也写入了我们需要的接口实际返回值和测试结论,接下来看看第二次执行结果
我们可以看到通过'a' 方式写入的数据会追加写入,而不会清空原有的数据,我们可以根据不同的业务场景需要进行选择。
6.接口联调测试V6.0
最后是我们本次接口联调测试脚本优化的终极版本,将之前所有的优化进行整合,完成测试脚本与测试数据分离,实现我们一开始想要达到的结果
使其达到不修改脚本,只修改导入测试文件来完成批量测试及导出测试报告
没有新东西,就是将之前的优化过程一一整合,直接上代码吧
它的结构很简单,通过定义好测试类,以及所需的2个测试方法,进行实例化后,通过打开准备好的测试文件,将其导入作为请求参数执行后将获取到的响应结果写入我们的测试报告中。
要注意的是传入的参数顺序不要轻易改变,否则会引起字符转及字典类型不一致的报错
最后我们来看看执行结果
由于我们是通过'a' 方式进行测试报告写入的,所以执行了很多次之后,测试结果不断追加写入测试报告中。
ok,至此我们接口联调测试脚本优化的内容就全部结束了,如果看到了这里,恭喜你,完成了最终版本的脚本优化,如果本期文章对你有所帮助,还望点赞关注一下,同时有不懂或不同想法意见的欢迎在评论区留言,学习就是通过不断的互相碰撞爆发出思维的火花!
下一期内容我们将开始学习接口测试框架!
保姆级教程Stept8--接口测试框架的准备与实现(持续更新中)
环境部署相关安装包及接口文档可关注公众号![](https://img-blog.csdnimg.cn/direct/d52a9c6667b14659a4184f482c0b6252.jpeg)
AI时代下无法被替代的测试们
发送:环境部署安装包 领取环境部署相关安装包
发送:接口文档 领取项目实战接口文档
有相关问题可在评论区留言或添加VX:19883291985 私信咨询