当前位置: 首页 > news >正文

接口自动化测试框架详解

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快   

 接口自动化测试框架只需要编写yaml(excel)测试用例即可完全实现零代码落地实施自动化测试。

1、核心技术

1.1 热加载封装(全网最早应用于自动化测试框架的封装技术)

1.2 requests统一请求封装

1.3 接口关联封装以及接口关联封装改进

1.4 规范yaml测试用例封装

1.5 统一接口断言封装,包括常规断言和数据库断言

1.6 yaml测试用例数据驱动封装

1.7 base_url举出路径封装

1.8 logging日志封装

1.9 接口加密封装

1.10 接口签名封装

1.11 零代码极限封装

1.12 企业级Allure报告的定制

1.13 流程用例封装,异常处理封装,常规基础模块封装等

注意事项:有关联用例,关联的上一个接口用例必须在上面(也可以放到a文件夹或者是通过修改yaml的文件名实现)

2、yaml编写测试用例常规可用的关键字

feature:模块名(必填)

story:接口名(必填)

title:用例标题(必填)

request:请求(必填)

method:请求方式(必填)

url:请求路径(必填)

headers:请求头

params:url之后的参数

data:表单数据

json:json数据

files:文件上传

validate:断言(必填)

codes:断言状态码

equals:相等断言

contains:包含断言

db_equals:数据断言

3、单接口测试用法(常规关键字填写接口数据)

-feature: 用户管理模块story: 获取access_token鉴权码接口title: 测试获取access_token鉴权码接口成功request: method: geturl: https://api.weixin.qq.com/cgi-bin/tokenparams: "grant_type": client_credential"appid": wxd87yu92q8ehyd"secret": f7384gf785ty8394fjre98yt45validate: null

4、测试需要接口关联的接口(通过extract关键字实现)

4.1上一个接口提取变量使用extract关键字

extract:

        token: url(.*?)tp://101.34        (正则表达式提取)

        order_id: $.data.data[0].id        (jsonpath提取)

-feature: 用户管理模块story: 获取access_token鉴权码接口title: 测试获取access_token鉴权码接口成功request: method: geturl: https://api.weixin.qq.com/cgi-bin/tokenparams: "grant_type": client_credential"appid": wxd87yu92q8ehyd"secret": f7384gf785ty8394fjre98yt45extract:access_token: $.access_tokenvalidate: null

4.2下一个接口使用变量(token即extract提取的变量名)

${read_yaml(token)}

-feature: 用户管理模块story: 查询标签接口title: 测试查询标签接口成功返回request: method: geturl: https://api.weixin.qq.com/cgi-bin/tags/getparams:access_token: ${read_yaml(access_token)}validate: null

5、测试需要数据驱动的接口(通过parametrize关键字实现)

parametrize:

        - ["order_id","username","index"]

        - ["654646","admin",0]

        - ["www","baili",1]

使用:

$ddt{token}

-feature: 用户管理模块story: 获取access_token鉴权码接口title: $ddt{title}request: method: geturl: https://api.weixin.qq.com/cgi-bin/tokenparams: "grant_type": $ddt{grant_type}"appid": $ddt{appid}"secret": $ddt{secret}extract:access_token: $.access_tokenparametrize:- [ "title","grant_type","appid","secret" ]- [ "测试获取access_token鉴权码接口成功","client_credential","wxd87yu92q8ehyd","f7384gf785ty8394fjre98yt45" ]validate: null

6、断言

validate:断言

        codes

        equals

        contains

        db_equals

-feature: 用户管理模块story: 查询标签接口title: 测试查询标签接口成功返回request: method: geturl: https://api.weixin.qq.com/cgi-bin/tags/getparams:access_token: ${read_yaml(access_token)}validate: codes: 200contains: tags

7、基础路径的配置

在config.yaml里面设置基础路径,然后再在yaml测试用例中使用热加载:${read_config(base_url)}

base_url: https://api.weixin.qq.com/cgi-bin

-feature: 用户管理模块story: 查询标签接口title: 测试查询标签接口成功返回request: method: geturl: ${read_config(base_url)}/tags/getparams:access_token: ${read_yaml(access_token)}validate: null

8、流程用例测试方法

-feature: 用户管理模块story: 获取access_token鉴权码接口title: 第一个测试步骤request: method: geturl: https://api.weixin.qq.com/cgi-bin/tokenparams: "grant_type": client_credential"appid": wxd87yu92q8ehyd"secret": f7384gf785ty8394fjre98yt45validate: null
-feature: 用户管理模块story: 获取access_token鉴权码接口title: 第二个测试步骤request: method: geturl: https://api.weixin.qq.com/cgi-bin/tokenparams: "grant_type": client_credential"appid": wxd87yu92q8ehyd"secret": f7384gf785ty8394fjre98yt45validate: null

9、总结 

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

 

http://www.lqws.cn/news/551737.html

相关文章:

  • 领域驱动设计(DDD)【22】之限定建模技术
  • 现代串口通讯UI框架性能对比
  • 【数据标注师】目标跟踪标注
  • 【MySQL数据库 | 第十篇】DCL语句----用户管理+权限控制
  • 商业秘密中经营信息的法律保护探析——以客户名册为例
  • ZooKeeper深度面试指南二
  • SpringMVC系列(七)(Restful架构风格(下))(完结篇)
  • 什么是哈希链(Hash Chain)?
  • 计算机组成原理-数据表示与运算(三)
  • 【数据结构】AVL树和红黑树的Insert(插入)(实现map.insert)
  • SpringBoot 防刷 重复提交问题 重复点击问题 注解 RequestParam RequestBody
  • 如何在 Manjaro Linux 上安装 Deepin 桌面
  • 构建证据的系统性知识体系:从理论到实践的完整指南
  • MyBatis 缓存机制详解
  • Python打卡:Day39
  • Java--数组
  • python打卡day56
  • 智能助手(利用GPT搭建智能系统)
  • Netty 的 PooledByteBuf与PooledHeapByteBuf​​
  • Day44 预训练模型
  • MySQL 连接指定端口后,为什么实际仍是 3306?
  • 【深度学习新浪潮】MoE技术入门(简要版)
  • 基于JavaWeb的校园失物招领系统设计与实现
  • 智能制造数字孪生集成交付生态链:智慧产线极速克隆,孪生重构生产周期
  • 飞牛OS安装zerotier组自己的虚拟局域网
  • 利用python实现NBA数据可视化
  • 数学术语之源——(矩阵或行列式的)秩数(rank)
  • UE--Slate 焦点、捕获,输入处理与玩家控制器的关系
  • 基于STM32设计的扫地机器人
  • 从代码学习深度学习 - 自然语言推断与数据集 PyTorch版