接口自动化测试框架实战-0-项目功能概览

熟悉我CSDN的朋友们应该知道,之前已经更新了requests、pytest、allure2、yaml、jenkins、postman等基础知识的合集。相信大家对接口测试已经有了全面的认识,现在应该迫不及待地想要一个实战项目了。接下来的文章中,我们将把这些知识点串联起来,以钉钉开放接口为例,一起从0到1开发一个通用的、可落地的接口自动化测试框架。如果大家有好的意见和建议,欢迎在评论区一起讨论!

背景

  • 微服务架构:现代应用程序越来越多地采用微服务架构,其中服务之间通过 API 进行通信。这增加了对 API 测试的需求。
  • 持续集成/持续部署(CI/CD):在 CI/CD 流程中,自动化测试是确保代码质量的关键环节。接口自动化测试可以快速验证代码更改是否符合预期。
  • 敏捷开发:敏捷开发强调快速迭代和频繁发布。自动化接口测试可以减少回归测试的时间,加快发布周期。
  • 技术栈多样性:不同的团队可能使用不同的技术栈开发服务。接口自动化测试框架通常与技术栈无关,可以统一测试标准。

作用

  • 提高测试效率:自动化测试可以快速执行大量测试用例,提高测试效率。
  • 减少人为错误:自动化测试减少了手动测试过程中可能出现的人为错误。
  • 实时反馈:自动化测试可以提供即时的测试结果,帮助开发团队快速定位问题。
  • 回归测试:在软件迭代过程中,自动化测试可以确保新代码不会破坏现有功能。
  • 负载测试:接口自动化测试可以模拟高并发请求,评估系统的性能。
  • 安全性测试:自动化测试可以检测 API 安全漏洞,如输入验证、认证和授权问题。
  • 文档验证:自动化测试可以验证 API 的实际行为是否与文档描述一致。
  • 跨团队协作:接口自动化测试框架可以作为不同团队之间协作的基础,确保接口的一致性和可用性。

意义

  • 质量保证:接口自动化测试是确保软件质量的重要手段。
  • 风险降低:通过早期发现问题,减少后期修复的成本和风险。
  • 敏捷性提升:自动化测试支持快速迭代和部署,提高团队的敏捷性。
  • 资源优化:释放测试人员从重复性工作中,让他们专注于更复杂的测试场景。
  • 业务支持:通过快速响应开发变更,更好地支持业务需求。
  • 技术进步:随着 AI 和机器学习技术的发展,接口自动化测试框架可以变得更加智能和高效。

功能概览

  • 运行环境:支持windows/mac/linux
  • 接口协议:支持http/https协议
  • 测试环境:支持test/stg/prod环境切换
  • 接口场景:支持单接口/场景接口
  • 数据库:支持mysql/mongod增删改查操作
  • 数据驱动:支持yaml/ini/db等三种类型驱动
  • 参数化:支持动态模版替换
  • 用例框架:支持pytest用例
  • json提取:支持jmespath表达式
  • 用例断言:支持等于/不等于/大于/小于/包含/不包含/True/False/长度等于/长度不等于/开头/结尾/数据库/正则匹配等10几种常见的断言
  • 测试报告: 支持allure2报告定制
  • 失败重试:支持
  • 用例并发执行:支持
  • 日志记录:支持控制台和文件输出
  • 代码托管:支持github/gitlab
  • 接口文档:钉钉开放接口文档(支持同学们本地调用调试)
  • 持续集成:支持jenkins参数化构建/定时任务/关联任务
  • 消息通知: 支持钉钉/飞书/企业微信/邮件等4种方式的测试结果通知

框架设计

主要技术栈:python3+requests+pytest+yaml+jmespath+allure2+github+jenkins

框架目录

commons:通用方法层,包括测试引擎、文件读写、数据库操作、业务封装、断言封装、报告增强、日志封装

config:配置文件层,test/stg/prod3个环境分开管理,其中有xxx_config.yaml和db.ini 分别为接口和数据库的配置信息

data:数据文件层,test/stg/prod3个环境分开管理,其中有xxxx_api.yaml为接口的测试数据模版

logs:日志记录层,按照时间维度记录接口测试执行的日志

reports:测试报告层,allure_results为测试结果数据,allure_reports为测试报告,status.txt为简要测试结果,后续供jenkins调用

tests:测试用例层,按照微服务分目录,新建测试用例py文件

utils:工具层,邮件/钉钉/飞书/企业微信结果通知封装

venv:项目虚拟环境

environment.properties:allure2报告环境信息配置

conftest.py:pytest钩子函数

debug.py:项目调试函数

pytest.ini:pytest配置文件

requirements.txt: 项目依赖包管理文件

总结

接口自动化测试框架是现代软件开发不可或缺的一部分,它帮助团队提高软件交付的速度和质量,同时降低风险和成本。随着技术的不断进步,接口自动化测试框架将继续发展,为软件开发带来更多的可能性。

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

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

相关文章

C++学习笔记02-结构基础(问题-解答自查版)

前言 以下问题以Q&A形式记录,基本上都是笔者在初学一轮后,掌握不牢或者频繁忘记的点 Q&A的形式有助于学习过程中时刻关注自己的输入与输出关系,也适合做查漏补缺和复盘。 本文对读者可以用作自查,答案在后面&#xff0…

【Linux】HTTP 协议

目录 1. URL2. HTTP 协议2.1. HTTP 请求2.2. HTTP 响应 1. URL URL 表示着是统一资源定位符(Uniform Resource Locator), 就是 web 地址,俗称“网址”; 每个有效的 URL 可以通过互联网访问唯一的资源, 是互联网上标准资源的地址; URL 的主要由四个部分组成: sche…

学习测试10-3自动化 web自动化

web自动化 chrome驱动下载地址: https://registry.npmmirror.com/binary.html?pathchromedriver/ https://googlechromelabs.github.io/chrome-for-testing/#stable观察Google版本,下相应的驱动 运行代码试试,成功Google就会弹出 from se…

华为OD机试2024年C卷D卷 - 山脉的个数/攀登者1 (Java)

华为OD机试(C卷D卷)2024真题目录 题目描述 攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。 地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素0代表地面。 例如&#xff…

ARM 单片机裸机任务调度框架

前言: 在没有使用操作系统的情况下,一个合理的裸机任务调度方式,可以更好的提供数据的处理,和用户体验,有多种任务调度的方式。 方案 1: 从上到下的任务调度方式,C语言程序的代码是在main函数…

K8S 上部署 Prometheus + Grafana

文章目录 一、使用 Helm 安装 Prometheus1. 配置源2. 下载 prometheus 包3. 安装 prometheus4. 卸载 二、使用 Helm 安装 Grafana1. 配置源2. 安装 grafana3. 访问4. 卸载 一、使用 Helm 安装 Prometheus 1. 配置源 地址:https://artifacthub.io/packages/helm/pro…

[路由器]IP-MAC的绑定与取消

背景:当公司的网络不想与外部人员进行共享,可以在路由器页面配置IP-MAC的绑定,让公司内部人员的手机和电脑的mac,才能接入到公司。第一步:在ARP防护中,启动IP-MAC绑定选项,必须启动仅允许IP-MAC…

linux、windows、macos清空本地DNS缓存

文章目录 Linux:Windows:macOS: Linux: 对于使用systemd的操作系统(如CentOS 7、Ubuntu 16.04),可以使用以下命令重启systemd-resolved服务来清除缓存: sudo systemctl restart sys…

【ELK】window下ELK的安装与部署

ELK的安装与部署 1. 下载2. 配置&启动2.1 elasticsarch2.1.1 生成证书2.1.2 生成秘钥2.1.3 将凭证迁移到指定目录2.1.4 改配置2.1.5 启动2.1.6 访问测试2.1.7 生成kibana账号 2.2 kibana2.2.1 改配置2.2.2 启动2.2.3 访问测试 2.3 logstash2.3.1 改配置2.3.2 启动 2.4 file…

你了解你的GD32 MCU系统主频是多少吗 ?

系统时钟是GD32 MCU的时基,可以理解为系统的心跳,片上所有的外设以及CPU最原始的时钟都来自于系统时钟,因而明确当前系统时钟是多少非常重要,只有明确了系统时钟,才能够实现准确的定时、准确的采样间隔以及准确的通信速…

通过QT基于C++实现串口通信

1.软件下载 本文所用到的所有软件都在以下连接可以下载 QT下载(注意下载路径最好全英,不要出现中文容易有bug) 链接:https://pan.baidu.com/s/1XCPlTBQ8fBOKBYO-H0mSVg?pwdm28f 提取码:m28f 串口工具下载 链接&…

二十、Qt位置相关函数

目录 一、函数概述 二、函数实践 三、总结 一、函数概述 Qt 提供了很多关于获取窗体位置及显示区域大小的函数,如 x()、y()和 pos()、react()、size()、geometry()等,统称为“位置相关函数”或“位置函数”, 如下图所示是几种主要的位置函数…

JS 鼠标拖动实现移动滚动条的滚动效果

效果 现在很多场景都以移动端为基本开发,比如说需要隐藏滚动条,在pc上实现鼠标拖动和手机触摸拖动差不多的效果。 实现 以mdn的overflow属性中范例为基础,内容溢出时候可使用overflow: auto;和overflow: scroll;实现滚动效果。 要实现鼠标…

华为防火墙总部与分支机构建立IPsec VPN涉及NAT穿越

一、IPsec VPN基本概念 1、隧道建立方式:分为手动建立和IKE自动协商,手动建立需要人为配置指定所有IPsec建立的所有参数信息,不支持为动态地址的发起方,实际网络中很少应用;IKE协议是基于密钥管理协议ISAKMP框架设计而…

一文看懂AI的 Transformer 架构!

1 AI的转换器是啥? 转换器,一种将输入序列转换或更改为输出序列的神经网络架构。它们通过学习上下文和跟踪序列组件之间的关系来做到这一点。例如,请考虑以下输入序列:“天空是什么颜色的?” 转换器模型会使用内部数学…

C4D2024软件下载+自学C4D 从入门到精通【学习视频教程全集】+【素材笔记】

软件介绍与下载: 链接: 链接:https://pan.baidu.com/s/1n8cripcv6ZTx4TBNj5N04g?pwdhfg5 提取码:hfg5 基础命令的讲解: 掌握软件界面和基础操作界面。学习常用的基础命令,如建模、材质、灯光、摄像机…

TypeScript体操(一):从基础到进阶

目录 前言Utility Types 是什么?常用 Utility Types前置知识typeofkeyoftypeof 和 keyof 的区别never 关键字extends 关键字结合条件判断infer 类型推断(模式匹配)判断是与非判断两个类型是否相等或兼容 循环递归嵌套字符串数组协变&#xff…

NMEA2000在船舶控制系统中航空插头插座组件特性

NMEA2000在船舶控制系统中的应用概述 NMEA2000协议是船舶电子设备之间通信的国际标准,广泛应用于船舶导航、监控和自动化系统。它基于CAN(Controller Area Network)总线技术,以确保在恶劣环境下的可靠性和效率。NMEA2000协议定义了…

英语语法第八课副词

文章目录 1、副词分类1.1 时间副词,表示时间或频率1.2 地点副词,表示地点或位置1.3 方式副词,表示行为方式1.4 程度副词,表示动作程度1.5 疑问副词,引导特殊疑问句1.6 强调副词,强调形容词或动词1.7 连接副…

隐语隐私计算实训营「联邦学习」第 5 课:基于隐私保护的机器学习算法介绍

【隐私计算实训营】是蚂蚁集团隐语开源社区出品的线上课程,自实训营上线以来,获得行业内外广泛关注,吸引上千余名开发者报名参与。本次暑期夏令营课程中,除了最新上线的「联邦学习系列」,还包含了「隐私保护数据分析」…