ApiTesting全链路接口自动化测试框架

简介

此框架是基于Python+Pytest+Requests+Allure+Yaml+Json实现全链路接口自动化测试。

主要流程:解析接口数据包  ->生成接口基础配置(yml)  ->生成测试用例(yaml+json) ->生成测试脚本(.py)  ->运行测试(pytest)  ->生成测试报告(allure)
测试流程:初始化请求 ->处理接口基础信息 ->读取前置接口用例 ->发送前置接口 ->处理当前接口数据 ->发送当前接口 ->检查接口返回
接口自动化测试无非分几大块:测试用例设计、测试脚本编写、测试结果校验、测试报告生成、测试配置管理。
其中常见有几大难点:接口之间依赖关联、测试数据与脚本分离、测试数据参数化处理、全量自动化耗时。

而这些本框架通通已为你解决,你无须编写任何代码,只需要你抓取接口数据包即可

关于接口依赖:你只要填写前置接口相对路径即可,如果存在数据依赖关系,此时你也仅需要填写前置接口对应的参数值,本框架将自动为你调用和替换关联数据。
关于测试数据:本框架采用yaml记录接口基本信息,当请求参数和结果较大时,将单独保存到json文件中,解决各类数据的错综复杂问题。
关于参数化:本框架采用常用工具使用的变量标识  ${var} ,通过正则表达式,自动检索变量,自动为你替换变量,并且为你提供多种函数助手【 $RandInt()$GenGuid()】为你解决测试数据生成问题。
关于用例执行:本框架利用pytest扩展库,支持多线程模式、失败用例重试、用例模糊匹配等。

目前主要支持四种运行模式:

> 0 -不开启自动生成测试用例功能,将直接运行测试
> 1 -根据手工编写用例,自动生成测试脚本,然后运行测试
> 2 -根据接口抓包数据,自动生成测试用例和测试脚本,然后运行测试
> 3 -根据接口抓包数据,自动生成测试用例和测试脚本,但不运行测试
注意:目前解析仅支持(.chlsj)格式,请使用Charles工具抓包导出JSON Session File

目前支持多种函数助手(以下仅为示例,之后将单独说明):

print('替换变量并计算表达式:', replace('$Eval(${unitCode}*1000+1)', {'unitCode': 9876543210}))
print('生成1-9之间的随机数:', replace('$RandInt(1,9)'))
print('生成10位随机字符:', replace('$RandStr(10)'))
print('从列表中随机选择:', replace('$RandChoice(a,b,c,d)'))
print('生成一个伪手机号:', replace('$GenPhone()'))
print('生成一个guid:', replace('$GenGuid()'))
print('生成一个伪微信ID:', replace('$GenWxid()'))
print('生成一个伪身份证:', replace('$GenNoid()'))
print('生成一个18岁伪身份证:', replace("$GenNoid(y-18)"))
print('生成下个月今天的日期:', replace("$GenDate(m+1)"))
print('生成昨天此时的时间:', replace("$GenDatetime(d-1)"))

替换变量并计算表达式: 9876543210
生成1-9之间的随机数: 9
生成10位随机字符: CB8512d4E6
从列表中随机选择: d
生成一个伪手机号: 18890688629
生成一个guid: 78A6698C-6793-11EB-8221-005056C00008
生成一个伪微信ID: AUTO9K6MRzVGfsNB4ZkIuSdXravD
生成一个伪身份证: 999577202102052043
生成一个18岁伪身份证: 953700200302056259
生成下个月今天的日期: 2021-03-05
生成昨天此时的时间: 2021-02-04 17:21:04.696745

框架流程图

你可能感兴趣的:(自动化测试,测试用例)