接口自动化平台用例执行引擎 — ApiTestEngine

news/2025/11/25 22:54:26/文章来源:https://www.cnblogs.com/ludundun/p/19270363

前言

ApiTestEngine 主要是为了快速进行接口自动化平台开发,基于 unittest 设计的接口用例执行引擎,其实之前开发的接口自动化框架 apin 也可以作为测试平台的用例执行引擎。但是 apin 最初设计的初衷是基于 JSON 或 YAML 文件来编写测试用例,里面设计了更多规则。用来进行平台开发反而有些笨重了,也不适合在课程中教学使用,于是在 apin 的基础上进行了精简和优化,开发了 ApiTestEngine 这个更为精简和灵活的用例执行引擎。下面介绍一下 ApiTestEngine 的具体使用。

►安装

pip install ApiTestEngine

用例执行函数

用例执行入口函数为 core.cases 模块中的 run_test,具体使用如下
►run_test 参数说明

case_data: 执行的测试数据
env_config:执行的环境配置
debug:是否为 debug 模式(单接口调试运行使用 debug 模式)

# 测试数据(详细结构说明看下一节)
case_data = [{},{}]
# 运行环境数据(详细结构说明看第三节)
config = {}
result = run_test(case_data=case_data, env_config=config, debug=False)

测试数据结构

下面详细介绍 run_test 执行测试的用例数据(case_data 参数)

1、 测试数据基本结构

[{'name':"测试场景名称1"'cases':['用例数据1','用例数据2']},{'name':"测试场景名称2"'cases':['用例数据3','用例数据4']},
......
]

执行的用例数据为 list 类型,列表中的元素为测试场景(dict 类型),测试场景有两个字段,name 和 cases

name:测试场景的名称
cases:包含该测试场景下所有用例的列表
2、测试场景中测试用例的数据结构

注意:测试用例数据为一个字典,具体结构如下:

{
"title": "测试用例2",
"host": "http://httpbin.org/post",
"interface": {"url": "/post","name": "登录","method": "post",},
"headers": {
'content-Type': "application/json"
},
"request": {'json': {"mobile_phone": "${{user_mobile}}","pwd": "lemonban"},
},
'setup_script': "print('前置脚本123')",
'teardown_script': "test.assertion('相等',200,response.status_code)"
}

►用例字段说明:

title: 用例名称( 必填)
host: 测试接口的 host 地址 (非必填,如果没填则会使用全局的变量中的 host)

interface:请求接口,字典类型(必填),包含三个字段:
name: 接口名(非必填)
url: 接口路径(必填)
method:请求方法(必填)

headers:请求头,字典类型(非必填,如果全局遍历中设置了请求头,则会将此处请求头和全局遍历请求头合并)
request:请求参数,字典类型(非必填,支持 requests 模块请求的所有字段),常用字段如下
data:传递表单参数(同 requests 模块的 data)
json:传递 JSON 参数(同 requests 模块的 json)
params:传递查询参数(同 requests 模块的 params)

files:上传文件,参数具体格式如下:

# { "参数名": ["文件名", "文件路径", "文件类型"]}
{"name": ["19.png", r"./image/19.png", "image/png"]
}

提示:其他 requests 模块中支持的字段这里都支持

setup_script:用例前置脚本,字符串类型(具体使用参照第五节)
teardown_script:用例后置脚本,字符串类型(具体使用参照第五节)
3、用例中引用全局遍历

在测试数据的 header、interface,requests 中可以引用变量

变量引用语法:$ {{变量名}}

"request": {'json': {"mobile_phone": "${{user_mobile}}","pwd": "lemonban"},
}
# 说明:上面requests的json参数中引用了变量 user_mobile

环境数据说明

环境数据一共包含三个字段:ENV,DB,global_func

1、ENV : 全局变量,字典类型(必填项),存放全局的 host,自定义的全局变量

2、DB:数据库配置对象,列表类型(必填项),支持同时连接多个数据库服务,每个连接为列表中的一个元素,连接配置信息如下

{
"name": "aliyun",
"type": "mysql",
"config": {"user": "future","password": "123456","host": "api.lemonban.com","port": 3306}
}

name: 连接名(字符串,只能用英文),在用例脚本可以通过 db.连接名。去执行 SQL 语句(参照前后置脚本)
type:数据库类型(目前仅支持 MySQL 数据库,可以自己扩展开发)
config:数据库连接信息,字典类型,字段如下
user :账号
password:密码
host: 数据库的 host 地址
port:数据库的端口
3、global_func:全局工具函数(字符串)

建议:在进行平台在开发时,将 global_func 设置问大文本字段,前端编辑完,后端直接存在数据库,执行用例时读取出来传入即可
全局工具函数说明

global_func 中定义的全局函数,在用例的前后置脚本中可以直接调用,调用方式如下
前后置脚本

为了让用户 更方便的去编写前后置脚本进行测试,框架本身也预设了一些变量和一些方法

1、脚本中预置的对象:

ENV:全局变量

env:临时变量

response:请求响应对象(后置脚本可以访问)

2、脚本中预置的方法

test.re_extract: 正则提取数据

参数1:数据源(str类型) 
参数2:提取表达式

test.json_extract:jsonpath 提取数据

参数1:数据源(dict类型 or list类型) 
参数2:提取表达式

test.save_global_variable:设置全局变量

参数1:变量名  
参数2:变量值

test.save_env_variable:设置临时变量

参数1:变量名    
参数2:变量值

test.delete_global_variable:删除全局变量

参数:变量名

test.delete_env_variable:删除临时变量

参数:变量名

test.assertion:断言方法

参数1:断言方法    
参数2:预期结果   
参数2:实际结果

如果以上内置的方法不能满足需求,可在全局的工具函数中定义相关的方法,在脚本中调用。=

关于 ApiTestEngine 的基本使用就给大家介绍到这里啦,大家可以去研究一下,用来编写测试平台。

房子要一层一层盖,知识要一点一点学。大家在学习过程中要好基础,多上手实操,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/976557.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NOIp 知识点复习

1. Floyd //exam: B3647 【模板】Floyd #include <iostream> #include <cstring> #include <cstdio> #define int long long using namespace std; const int MAXN = 105; int f[MAXN][MAXN]; int n…

Redis:高性能NoSQL数据库实战指南 - 教程

Redis:高性能NoSQL数据库实战指南 - 教程2025-11-25 22:46 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: bloc…

2025年口碑好的轮胎品牌哪家好:十大消费者信赖品牌揭秘

2025年口碑好的轮胎品牌哪家好:十大消费者信赖品牌揭秘在当前消费端愈发重视驾乘体验与安全信赖的市场语境下,“口碑好的轮胎品牌哪家好”正迅速跃升为车主、采购决策者与行业观察者共同聚焦的核心议题。伴随新能源汽…

Topic 2

Topic 2 目录Python 内建数据结构概览 List(列表) - 列表特性 - 创建方法、访问方式、修改方式 - 添加、插入、删除、排序、遍历 - 方法总表 - 例子逐行解释 Tuple(元组) - 特性、创建、访问 - 不可变性质、如何绕…

2025年反渗透一体机/软化水设备/中水再生水回用设备/净水处理设备厂家最新权威推荐:产能、专利、环保三维数据透视,行业数据用户口碑,工业/家用选择指南

随着城镇化进程加快与环保政策收紧,净水、纯水、软化水设备成为解决村镇饮水安全、工业用水净化的核心装备。本榜单基于技术实力、区域适配性、案例验证三大维度,结合《2024中国水处理设备行业发展报告》及环保项目招…

AcWing 860:染色法判定二分图 ← 并查集

​【题目来源】https://www.acwing.com/problem/content/862/【题目描述】给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环。请你判断这个图是否是二分图。【输入格式】第一行包含两个整数 n 和 m。接下来 m …

回调函数20251125

1.回调函数:将函数作为指针传参给其他函数使用,实现解耦作用,将各个功能分开。举例,不含参数的回调函数:#include"stdio.h" int Callback() { printf("Hello, this is Callback "); re…

类模板的实现

pragma once include using namespace std; template class Myvector { friend ostream& operator<< (ostream& out, const Myvector & othervectr); //用有元函数重载输出运算符 ,注意必须要加…

rime(小狼毫)+雾凇+皮肤+万象大模型+个人词库补充

rime(小狼毫)+雾凇+皮肤+万象大模型+个人词库补充 在使用rime一段时间后,以下是我的配置心得 很多配置都基于ymal文夹,可以先去稍微了解一些yaml格式,不符合yaml格式的修改是不会生效的 (简单介绍 冒号后面一定要有…

2025年中国前五大轮胎品牌:专业测评与选购指南

2025年中国前五大轮胎品牌:专业测评与选购指南在当前产业转型与消费升级交汇的关键节点,“中国前五大轮胎品牌”已成为资本市场、主机厂供应链与广大消费者研判行业走势与品质选择的核心议题。为给行业及消费者提供基…

lru_cache装饰器的缓存清除机制原理

lru_cache 装饰器的缓存清除机制核心围绕 LRU(Least Recently Used,最近最少使用)算法 展开,仅在特定条件下触发清除,且分为「被动淘汰」「主动清除」「隐式清除」三类场景。以下是详细拆解: 一、核心:LRU 淘汰…

2025年中国前十大轮胎品牌:最新官方榜单深度解析

2025年中国前十大轮胎品牌:最新官方榜单深度解析在当前汽车产业加速重构与消费升级并行的新周期,“中国前十大轮胎品牌”已成为资本市场、主机厂供应链与广大消费者研判行业走向的核心坐标。为给行业及消费者提供基于…

网格图分治模型

若网格图面积为 \(S\),取短边分治,令分治层的复杂度和短边相关(一般是从短边上每个点出发对整个网格图 DP/搜索 之类的)。 因为短边长度 \(O(\sqrt S)\)(一般)一层复杂度是 \(O(S\sqrt S)\),总复杂度 \(T(S)=2T…

Python内置的lru_cache装饰器实现缓存教程

functools.lru_cache 是 Python 内置的函数缓存装饰器,基于「最近最少使用(LRU)」策略管理缓存,能自动缓存函数的调用结果,避免重复执行高耗时函数(如复杂计算、数据库查询)。以下是它的完整使用指南,包含基础…

2025年轮胎品牌推荐:权威TOP10全球品牌综合排名

2025年轮胎品牌推荐:权威TOP10全球品牌综合排名在当前汽车消费加速升级与新能源浪潮席卷的时代背景下,“轮胎品牌推荐”已成为广大车主、整车厂商及资本市场研判赛道格局的核心议题。面对琳琅满目的品牌阵列与繁杂的…

详细介绍:Git分支合并实战指南:从feature到master,一文搞定全流程!

详细介绍:Git分支合并实战指南:从feature到master,一文搞定全流程!pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &…

北京墙体彩绘公司推荐香鲸艺术坊,行业排名遥遥领先!

墙体彩绘作为空间美学升级的核心方式,在北京商业场景引流、家装个性定制、政企文化建设等领域需求持续攀升。本文基于市场口碑调研、服务案例落地、环保资质审核、售后保障能力四大核心维度,整理出北京墙体彩绘行业综…

虚拟科学峰会推动技术交流创新

文章探讨了疫情期间科学会议向虚拟形式转变的趋势,重点分析了某中心消费者科学峰会的线上举办经验,涉及机器学习、优化算法等技术领域,并讨论了虚拟会议对科研协作模式带来的深远影响。虚拟科学会议:技术驱动的新交…

java---gradle配置国内镜像

在进行java开发项目的时候,相比maven来说,gradle更好用一些。但是由于服务器在国外,下载资源就很慢,超时还会报异常。 方法一:使用本地Gradle打开腾讯云Gradle镜像页面:https://mirrors.cloud.tencent.com/gradl…

2025年11月南京装修公司综合实力排行榜(品牌智鉴榜推荐)

品牌智鉴榜评测,2025年11月,品牌智鉴榜联合第三方权威测评机构,基于设计能力、施工品质、售后响应、价格透明度等12项核心指标,完成对全市60余家正规装修企业的综合测评,发布《2025年11月南京装修公司综合实力排行…