接口自动化框架的价值
- 减少回归测试的成本
- 减少提测后的测试周期
- 落地线上定时巡检,尽可能更早精准发现线上问题
我设计的接口自动化框架的分层结构目录(unittest框架)
- business—业务层的封装
主要用来封装接口通用协议,以及测试用例的前置条件和数据清理 - common—通用方法的封装
用来封装接口的断言方法,以及数据源的校验,满足用例的日志输出和存储的方法,以及yaml配置的读取方法,满足不同维度配置的读取,并且实现环境切换的方法 - data—配置存储目录
用来存储测试账号、接口url、请求参数等 - logs—日志存储目录
- testCase—存储测试用例
- main.py 项目的执行入口
- report.html 测试报告
接口自动化框架的实现过程:
接口通用的断言方法:
封装http_asser函数,其中expact形参作为接口返回体的预期结果,actual为接口返回体的实际结果,先进行数据结构的判断,然后用unittest框架的assertEqual方法断言,比如字典结构的话,先进行返回体的元素长度的校验,在进行返回体字段的校验,在校验字段的值,如果遇到多层嵌套的字典或列表,则使用递归函数重新调起http_asser函数。
日志的输出和存储的封装:
封装了打印日志的函数,在执行测试用例的时候可以打印过程步骤、接口请求数据、接口返回数据,这样遇到问题可以迅速定位
请求方法的封装:
编写用例时,每条用例都需要编写接口请求、返回的日志输出,容易造成代码的冗余,所以将常用的接口通用协议进行封装,可以避免冗余问题。
环境变量的读取方式:
在yaml的读取方式下实现环境的切换方法,通过切换环境的配置,可以指定项目的执行环境,比方说测试化境、线上环境、预发布环境的切换,并在main文件下定义环境控制的常量。
data配置存储目录:
可以把测试账号,所有的接口请求url、请求体、请求参数(包含必填和非必填),写入yaml文件里面,这样可以提高我们的编码效率。
测试用例的输出(示例):
执行文件main:
在main实现了用例批量执行的方法,还有报告的生成和能控制不同维度执行