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

news2024/11/25 23:48:23

熟悉我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.coloradmin.cn/o/1941559.html

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

相关文章

数据结构C++——栈

文章目录 一、定义二、ADT三、栈的描述方法3.1 数组描述3.1.1 派生arrayList3.1.2 定制数组arrayStack3.2 链表描述3.2.1 派生chain3.2.2 定制数组LinkedStack四、应用4.1 括号匹配4.2 汉诺塔4.3 列车车厢重排4.4 迷宫老鼠一、定义 DEF. 栈(stack)是一个线性表,其插入(也称…

Window环境下MySQL管理

1、MySQL服务启用和停止 图形化界面管理 使用键盘组合键(Win R)打开运行对话框,在对话框中输入services.msc并点击确定。 这里可以看到服务名称为MySQL84并处于正在运行的状态。 选中后右键可以进行暂停、停止、重启等操作。 命令提示符管理…

python--16 GUI编程1

GUI编程简介 主流3大GUI框架 框架名称说明Tkinter一个轻量级的跨平台图形用户界面(GUI)开发工具,是Tk图形用户界面工具包标准的Python接口Kivy基于OpenGL ES 2,能够让使用相同源代码创建的程序能跨平台运行。这个框架是事件驱动…

LLaMA 背景

什么是LLaMA? 模型介绍:LLaMA是Meta开发的语言模型,旨在推动开放科学和人工智能的实践。 参数范围:这些模型的参数数量从7B到65B不等,覆盖了不同规模的需求。 训练数据:LLaMA模型是在数万亿个公开数据集的…

2024视频改字祝福 豪车装X系统源码uniapp前端源码

源码介绍 uniapp视频改字祝福 豪车装X系统源码 全开源,只有uniapp前端,API接口需要寻找对应的。 创意无限!AI视频改字祝福,豪车装X系统源码开源,打造个性化祝福视频不再难! 想要为你的朋友或家人送上一份特别的祝福…

Spring Boot 日志 (初级)

什么是日志呢?其实就是一条条的打印语句,我们就可以根据打印出来的日志,去分析程序存在的问题等。虽然作为后端开发人员,日志并不是那么重要,但是在学习的过程中,也是比较重要的,可以使用在我们…

OpenCV分水岭算法watershed函数的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 描述 我们将学会使用基于标记的分水岭算法来进行图像分割。我们将看到:watershed()函数的用法。 任何灰度图像都可以被视为一个地形表…

vue项目实战速查记录

1.图片下载到本地 2.本地静态文件访问 3.元素大小相同,相互覆盖 1.图片下载到本地 实现原理:创建a标签,利用a标签下载属性. download(){const link document.createElement(a);link.href "图片地址";link.setAttribute(download, name);document.body.ap…

Docker核心技术:Docker原理之Namespace

云原生学习路线导航页(持续更新中) 本文是 Docker核心技术 系列文章:Docker原理之Namespace,其他文章快捷链接如下: 应用架构演进容器技术要解决哪些问题Docker的基本使用Docker是如何实现的 Docker核心技术&#xff1…

【Qt】 FFmpeg+Qt windows 32位或者64位环境搭建

简介 目前Ffmpeg官网(64位连接)下载的均为64位编译的,这要求我们采用的Qt creator也采用64位编译器。但是仍存在部分用户采用32位编译器,所以这部分用户需下载32 Ffmpeg(32位连接)。 根据使用的编译器位数…

ArkTS语言---基础知识

ArkTS是一种为构建高性能应用而设计的编程语言。ArkTS在继承TypeScript语法的基础上进行了优化,以提供更高的性能和开发效率。目前流行的编程语言TypeScript是在JavaScript基础上通过添加类型定义扩展而来的,而ArkTS则是TypeScript的进一步扩展。TypeScr…

【面经】C++八股文(地平线C++一面)

一、C11的新特性都有哪些? 1.1 自动类型推断 (auto) auto 关键字允许编译器自动推断变量的类型,从而简化代码的书写。 auto num 5; // int auto pi 3.14; // double auto str "Hello"; // const char*1.2 范围 for 循环 范围…

tomcat部署java项目 出现404访问不到

今天使用tomcat做项目部署,部署SSM项目把项目上传到tomcat下面的webapps后一直访问不到项目 一直报404访问不到资源,但是访问tomcat又可以,浏览器能出现tomcat的标致,查看logs里面的运行日志发现报错:org.apache.catalina.core.St…

PYTHON学习笔记(四、pyhton数据结构--列表)

(1)list列表 列表的含义是指:(1)一系列的按特定顺序排列的元素组成。(2)python中内置的可变序列。(3)在python中使用[]定义列表,元素与元素之间使用英文的逗…

Vue中渲染函数

why? 在绝大多数情况下,Vue 推荐使用模板语法来创建应用。然而在某些使用场景下,我们真的需要用到 JavaScript 完全的编程能力。这时渲染函数就派上用场了。 例如:下方要在多个模型上方设置对话框,如果使用Vue模板语法相对较困难…

c#中的From窗体

Windows Forms(简称WinForms)是.NET Framework中用于构建Windows桌面应用程序的一个组件。Form 类是WinForms中最基本的窗口类型,提供了一个容器,可以容纳控件(如按钮、文本框、标签等)。 以下是Form的一些…

数据结构之判断平衡二叉树详解与示例(C,C++)

文章目录 AVL树定义节点定义计算高度获取平衡因子判断是否为平衡二叉树完整示例代码结论 在计算机科学中,二叉树是一种非常重要的数据结构。它们被广泛用于多种算法中,如排序、查找等。然而,普通的二叉树在极端情况下可能退化成链表&#xff…

autoware.universe源码略读(3.17)--perception:occupancy_grid_map_outlier_filter

autoware.universe源码略读3.17--perception:occupancy_grid_map_outlier_filter Overview(Class)RadiusSearch2dfilter(Class Constructor)RadiusSearch2dfilter::RadiusSearch2dfilter(mFunc)RadiusSearc…

Transformer系列总结

文章目录 1、Transformer基本原理介绍1.Transformer 结构2.嵌入表示层3. 注意力层3.1 输⼊矩阵3.2 查询矩阵和键矩阵3.3 Q和K的转置的点击除以键向量维度的平⽅根3.4 应⽤softmax函数3.5 注意力矩阵通过分数矩阵乘以值矩阵得出3.6 注意⼒矩阵 4. 前馈层5. 残差连接与层归一化6.…

虚幻引擎,体积雾、体积光、镜头泛光

1、体积雾 这里介绍的是用于地面的体积雾效果,效果如图1-1: 图1-1 首先,需要场景中存在指数级高度雾并开启体积雾(如图1-2)。然后创建材质,材质域选择“体积”,混合模式选择“Additive”。材质节…