基于postman+python的接口自动化测试解决方案

3 篇文章 2 订阅
2 篇文章 0 订阅

一、楔子:全是扯淡,千万不要看

话说测试之事,莫过于点点点,何其繁琐,何其无聊。若是做接口测试,虽亦无聊,但却能得“有趣”二字。

诚然,在做接口自动化测试的时候,一般来说,会先在postman上调试接口,等到所以接口调通后,在一个个拷贝到Excel里面,然后启动自动化脚本执行Excel中的测试用例。

听起来似乎不错,但你可知,这人世间最为痛苦的事情,莫过于要将这调试好的接口,一个个拆分开(往往一个接口会拆成几部分甚至十几部分,参考请以excel管理你的接口测试用例),填进Excel表格之中。当接口数量一多,个中种种,苦不堪言。

于是,我萌生了一个想法:为何不直接对postman导出的用例集进行自动化测试?

二、需求:

1、能直接使用postman导出的测试集,并且支持多个
2、能对数据进行预处理、恢复
3、能够生成测试报告,通过邮件发送到指定接收人
4、能够定时执行任务,支持持续集成

三、实现:

自动化测试流程一般如下:

Created with Raphaël 2.2.0 开始 初始化数据 获取用例 执行用例 生成报告 发送报告 结束

实际在这个框架设计的时候,多了删除unittest临时用例这么一个步骤,而执行用例和生成报告其实是一起的。整个设计思路如下:
先从postman的测试集中读取所需数据,然后组装到自定义的json变量中。读取完所有测试用例,循环遍历,替换模板中的空缺内容,生成unittest临时用例,放到相应的文件夹unit_cases中。然后再执行整个目录下unittest用例,最后生成报告通过邮件发送到指定接收人。
框架整理结构如下:
在这里插入图片描述程序入口执行如下命令:
在这里插入图片描述

1、数据库操作-初始化、恢复数据

在进行接口测试的时候,有时候需要准备数据,但这数据只是临时需要,测试完成后需要处理掉。所以,一般来说会在测试前生的所需数据,测试完成后,再清除。
封装一个操作数据库的API,这里以MySQL为例。(这里只贴了常用的部分)
在这里插入图片描述

2、清空测试用例目录

由于每次执行的case都是重新生成,所以每次执行前,都要将临时存储case全部清空。这里也是封装一个API,调用即可。
在这里插入图片描述

3、获取、生成测试用例

3.1、先从postman测试集里面获取并组装成json格式的用例

分析postman用例集格式,遍历讲用例所需的东西提取出来,再重新组装进json,以便后续使用。
(函数太长,只截取了一部分)
在这里插入图片描述

3.2、再用模板来替换,生成unittest用例,并临时存放到指定目录

根据上面重新组装的json集,替换模板中的内容,生成unittest用例,放到指定文件夹。
在这里插入图片描述

4、执行测试测试用例

使用discover方法,执行指定目录下所有的unittest用例
在这里插入图片描述

5、邮件发送测试结果

5.1、封装python自带邮箱API

在这里插入图片描述

5.2、调用API,发送上面生成的测试报告

在这里插入图片描述

四、尚需优化的地方

1、跨用例参数传递
使用全局变量,不知道是否可行?希望大佬们指点指点。
2、传参参数化问题
组装时以list方式传进,然后在生成的时候,遍历list,生成多个unittest用例,似乎可行。
3、sql执行优化
可以将sql语句放到postman的pre_request_script里面,组装用例将其加入,如此一来,就可以针对单个用例执行sql,避免影响其他用例执行。

总体来说,这方法很笨,带到有改进的时候,再来更新。就目前而言,暂时解决了目前的需求,也相应的提高了效率。
当然,代码中必然会存在很多问题,也肯定有诸多能够改进的地方,还望各位不吝赐教。
需要全部代码的小伙伴,请关注下方公众号并留言,谢谢。(本来是放在github上,但由于某些原因,不得已全部删除了,望请见谅)
如果有好的想法或者点子,如需投稿,也欢迎投稿“万事屋丫”。
在这里插入图片描述

  • 12
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值