话说测试之事,莫过于点点点,何其繁琐,何其无聊。若是做接口测试,虽亦无聊,但却能得“有趣”二字。
诚然,在做接口自动化测试的时候,一般来说,会先在postman上调试接口,等到所以接口调通后,在一个个拷贝到Excel里面,然后启动自动化脚本执行Excel中的测试用例。
听起来似乎不错,但你可知,这人世间最为痛苦的事情,莫过于要将这调试好的接口,一个个拆分开(往往一个接口会拆成几部分甚至十几部分,参考请以excel管理你的接口测试用例),填进Excel表格之中。当接口数量一多,个中种种,苦不堪言。
于是,我萌生了一个想法:为何不直接对postman导出的用例集进行自动化测试?
1、能直接使用postman导出的测试集,并且支持多个
2、能对数据进行预处理、恢复
3、能够生成测试报告,通过邮件发送到指定接收人
4、能够定时执行任务,支持持续集成
自动化测试流程一般如下:
实际在这个框架设计的时候,多了删除unittest临时用例这么一个步骤,而执行用例和生成报告其实是一起的。整个设计思路如下:
先从postman的测试集中读取所需数据,然后组装到自定义的json变量中。读取完所有测试用例,循环遍历,替换模板中的空缺内容,生成unittest临时用例,放到相应的文件夹unit_cases中。然后再执行整个目录下unittest用例,最后生成报告通过邮件发送到指定接收人。
框架整理结构如下:
程序入口执行如下命令:
在进行接口测试的时候,有时候需要准备数据,但这数据只是临时需要,测试完成后需要处理掉。所以,一般来说会在测试前生的所需数据,测试完成后,再清除。
封装一个操作数据库的API,这里以MySQL为例。(这里只贴了常用的部分)
由于每次执行的case都是重新生成,所以每次执行前,都要将临时存储case全部清空。这里也是封装一个API,调用即可。
分析postman用例集格式,遍历讲用例所需的东西提取出来,再重新组装进json,以便后续使用。
(函数太长,只截取了一部分)
根据上面重新组装的json集,替换模板中的内容,生成unittest用例,放到指定文件夹。
使用discover方法,执行指定目录下所有的unittest用例
1、跨用例参数传递
使用全局变量,不知道是否可行?希望大佬们指点指点。
2、传参参数化问题
组装时以list方式传进,然后在生成的时候,遍历list,生成多个unittest用例,似乎可行。
3、sql执行优化
可以将sql语句放到postman的pre_request_script里面,组装用例将其加入,如此一来,就可以针对单个用例执行sql,避免影响其他用例执行。
总体来说,这方法很笨,带到有改进的时候,再来更新。就目前而言,暂时解决了目前的需求,也相应的提高了效率。
当然,代码中必然会存在很多问题,也肯定有诸多能够改进的地方,还望各位不吝赐教。
需要全部代码的小伙伴,请关注下方公众号并留言,谢谢。(本来是放在github上,但由于某些原因,不得已全部删除了,望请见谅)
如果有好的想法或者点子,如需投稿,也欢迎投稿“万事屋丫”。