接口自动化框架的价值

  • 减少回归测试的成本
  • 减少提测后的测试周期
  • 落地线上定时巡检,尽可能更早精准发现线上问题

我设计的接口自动化框架的分层结构目录(unittest框架)

  1. business—业务层的封装
    主要用来封装接口通用协议,以及测试用例的前置条件和数据清理
  2. common—通用方法的封装
    用来封装接口的断言方法,以及数据源的校验,满足用例的日志输出和存储的方法,以及yaml配置的读取方法,满足不同维度配置的读取,并且实现环境切换的方法
  3. data—配置存储目录
    用来存储测试账号、接口url、请求参数等
  4. logs—日志存储目录
  5. testCase—存储测试用例
    • main.py 项目的执行入口
    • report.html 测试报告

接口自动化框架的实现过程:

接口通用的断言方法:

image
封装http_asser函数,其中expact形参作为接口返回体的预期结果,actual为接口返回体的实际结果,先进行数据结构的判断,然后用unittest框架的assertEqual方法断言,比如字典结构的话,先进行返回体的元素长度的校验,在进行返回体字段的校验,在校验字段的值,如果遇到多层嵌套的字典或列表,则使用递归函数重新调起http_asser函数。

日志的输出和存储的封装:

image-1739362890354
封装了打印日志的函数,在执行测试用例的时候可以打印过程步骤、接口请求数据、接口返回数据,这样遇到问题可以迅速定位

请求方法的封装:

4cc9fdba61286815e12905295ea1453
编写用例时,每条用例都需要编写接口请求、返回的日志输出,容易造成代码的冗余,所以将常用的接口通用协议进行封装,可以避免冗余问题。

环境变量的读取方式:

image-1739363405408
在yaml的读取方式下实现环境的切换方法,通过切换环境的配置,可以指定项目的执行环境,比方说测试化境、线上环境、预发布环境的切换,并在main文件下定义环境控制的常量。

data配置存储目录:

可以把测试账号,所有的接口请求url、请求体、请求参数(包含必填和非必填),写入yaml文件里面,这样可以提高我们的编码效率。

测试用例的输出(示例):

image-1739363885236

image-1739364632030

执行文件main:

5be5aa7df0cf80ead9ba452f6e2ee29
在main实现了用例批量执行的方法,还有报告的生成和能控制不同维度执行