前言
之前文章跟大家分享了一下自己在接口自动化测试中进行测试准备的一些相关知识点,接下来本篇文章详细分享一下接口自动化框架设计的思路总结,希望能对初次探索接口自动化测试的小伙伴们有一些思路上的帮助。
小编是以python+requests+unittest+HTMLTestRunner为基础进行的接口自动化探索,下面结合接口测试的测试点介绍一下整个框架的搭建思路:
我们知道接口测试本质是对数据的测试,调用接口,输入一些数据,随后,接口返回一些数据,最后验证接口返回数据的正确性。
基础
首先要理清楚进行接口测试需要了解的内容:
1、接口文档
a.接口协议--基于http协议的接口
b.接口域名--XXX.XX.XX
c.接口请求类型--业务中只涉及到get和post类型,其中又包含认证校验机制
d.接口参数
e.接口的返回--包含http状态码、业务状态码、实际业务逻辑对应的返回内容
2、 接口内部逻辑
a.接口内部逻辑对应的数据库及redis的操作(增删改查)
3、自动校验的结果
4、测试结果的展示
5、必要的解释说明
a.文档
b.注释
具体内容
小编在选择接口请求参数分离方式时对csv、excel、xml进行了对比,最终选择xml格式。
由于excel或csv格式需要维护一组测试case和参数对应关系,每次增删改case会需要同时修改excel或csv中对应的内容,而xml格式可以根据功能模块及接口设计参数文件的结构目录,无需再对接口case和对应的参数进行对应修改,所以选择了借鉴使用友组项目中接口自动化框架,也使用xml获取参数的模式,项目结构具体如下:
整个框架思路说明:
一、最开始就需要建立一个readme文档,即doc目录可以对框架进行整体的说明、写case具体的思路说明等。
二、既然是通过代码的形式进行自动化测试,就有可能会出现编写过程中的问题调试,所以需要有对应的log目录,即logs目录。便于case执行失败后进行问题定位
三、请求参数、按功能模块,根据开发给的的文档,以xml文件的格式对每个接口进行添加,如datafile/input/模块名/接口名 ,及对整个所有接口参数进行检索的interface.xml
四、公共api封装,在进行接口测试前通过文档我们可以知道请求域名、请求方法、公共请求参数(xml保存默认参数)、业务逻辑需要用的接口的公共参数等,可以对这些内容进行封装,如src/common/request_interface.py
包含对接口请求的封装,将其封装成通用的,这样可以满足业务所需要的get和post两种请求。大家可以自行根据自己业务请求的特点结合request库提供的方法进行封装。
如src/common/constant.py包含对域名、某一功能模块参数内容格式化获取、url获取、接口鉴别用户方法等(此处不做展示)
由于业务特点,对接口进行请求前可能需要构造某一种返回逻辑的测试环境,如模拟新用户功能,测试账号名是手机号于已经注册但又没有那么手机号可供每次作为新用户进行注册,这就需要将数据库中的需要对数据库或redis进行删除,从而实现新用户的模拟,其中src/common/db_manager.py和src/common/redis_manager.py分别对两者增删改查方法的封装,这时它们就起到了关键作用(大家可以自行搜狗,根据自己的风格编写)
当然,根据需要,也可增加其他可以使用的公共api接口,如针对php语言特点对返回的数据进行计算封装的src/common/calculate.py
五、每个功能模块的公共部分及所有接口用例执行入口,如crazy接口的公共功能部分src/activity/crazy及测试用例run_activity_crazy.py,及all_interfaces.py
以上接口用例的编写,对接口业务逻辑根据自己的需要进行编写,结果展示可以借助HTMLTestRunner,网上也有很多示例,可自行搜狗
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
文档获取方式:
这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取