如何基于YAML设计接口自动化测试框架?看完秒会

news2024/11/18 12:40:11

在设计自动化测试框架的时候,我们会经常将测试数据保存在外部的文件(如Excel、YAML、CSV)或者数据库中,实现脚本与数据解耦,方便后期维护。目前非常多的自动化测试框架采用通过Excel或者YAML文件直接编写测试用例,通过脚本读取出来驱动自动化测试代码执行。

至于采用Excel还是YAML格式各位小伙伴都有不同见解,比如用Excel维护直观、修改数据方便,劣势是通过Git这样的版本控制工具不太好比较历史版本差异(因为是二进制格式);YAML的优势是支持数据格式完备、版本控制管理方便(文本格式),劣势是没有Excel这么直观。Excel这种方式大家都比较熟悉了,本文带着大家来了解如何基于YAML设计自动化测试框架。

YAML格式测试用例设计

以接口自动化为例,用YAML编写测试用例要实现的基本功能需求:

1.一个YAML文件能够支持多个用例存储需求,不然几千个用例对应几千个YAML文件管理起来也受不了

2.用例中能够支持单接口测试用例也能支持业务场景用例(多个接口调用组合)

3.用例中需要包含所属模块、用例名、请求信息、断言信息、提取响应(实现接口关联)等信息

基于上述需求我们来设计一版YAML格式用例:

在这里插入图片描述

casename与module字段简单,我们来看下teststeps,为什么teststeps是数组类型?

因为用例中包含一个/多个接口请求步骤,也就是一个TestCase包含了多个teststep,每一个teststep就是一个接口请求。

request中指定接口请求信息,包括接口请求方法、请求地址、请求头、请求参数;其中不同的请求参数类型我们需要进行区别,上述的是json传参,如果是form表单、查询参数传参我们都可以约定为类似的key-value结构,只需要将json改为formparam、queryparam。

需要注意的是文件上传接口的参数会比较特殊,一般来说我们只需要设置要上传文件路径即可,所以我们可以这样设计:

图片

extract字段为要提取的响应数据字段,传递给后续的接口使用。一般我们要求能够支持JsonPath表达式或者正则表达式来提取,对应的key为要提取的字段名,对应的值为要提取的字段表达式。

validate字段是断言信息,也就是验证响应结果是否符合预期。这里我们需要支持常用的判断方法包括:等于、大于、小于、大于等于、小于等于,通过简写eq代替equals(等于)判断,其他的类似:大于等于(ge)、小于等于(le)、小于(lt)、大于(gt)。

上述的是单接口测试用例,我们看下多接口串联(业务场景)用例编写的样式:

ModifyUserProfile.yaml

图片

在多接口测试中重要的是要能够支持参数传递,这里我们在前一个接口使用extract提取接口的响应字段,在后续要使用的接口中通过${token}方式进行引用,熟悉Jmeter接口测试工具的同学应该非常熟悉这种格式。

脚本读取YAML数据

在读取YAML文件数据之前,我们首先需要了解两个概念:序列化与反序列化

  • 把对象转换为字节序列的过程称为对象的序列化;
  • 把字节序列恢复为对象的过程称为对象的反序列化。

而我们读取YAML的过程就可以称之为反序列化。

主流的编程语言都能实现对YAML的解析,接下来以Java语言为例讲解如何读取YAML文件的内容:

Java中能够实现YAML序列化和反序列化的库有很多,包括SnakeYaml、Jackson、jYaml等,使用起来大同小异。以使用Jackson为例:

步骤一:Maven POM文件中添加库的坐标

在这里插入图片描述

这里用到了jackson-databind与jackson-dataformat-yaml,其中jackson-databind是Jackson的主库,jackson-dataformat-yaml是支持YAML数据格式的库,在这里同时引入了lombok,是为了后面编写实体类时简化一些代码的书写:

Lombok可以来帮助我们简化一些必须有但显得很臃肿(比如get/set方法)的Java代码的工具,通过使用对应的注解,可以在编译源码的时候自动生成对应的方法。

步骤二:编写YAML实体类

对照YAML文件内容比如字段名(比如 “姓名”)和字段的数据类型(比如字符串),创建一个对应的类,用来在 Java 中表示YAML文件的信息。目的是为了能够将YAML文件保存到Java对象中(反序列化)。

TestCase实体类:

图片

Teststep实体类:

图片

Validate实体类:

图片

通过Jackson读取YAML文件内容并保存到TestCase实体类对象中

图片

其中new TypeReference<List>() {}是因为读取到的YAML文件中有多个TestCase用例,所以我们需要定义为List集合类型来接收。

来看看读取之后的效果:

图片

后续即可通过返回的testCase发起接口请求(比如通过REST-assured)、进行接口断言、提取响应字段等操作。

如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以加入我们的QQ群:746506216,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。


资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

部署高校房屋管理系统可以实现哪些目标?

数图互通房产管理 随着技术的不断进步和升级&#xff0c;以及高校房屋建筑物数量的不断扩充&#xff0c;建立房屋资产管理信息系统进行信息化、数字化、图形化房屋资产管理已经是势在必行。数图互通自主研发的FMCenterV5.0平台&#xff0c;是针对中国高校房产的管理特点和管…

工业数据与数据采集应用如何在ARM+FPGA异核架构的米尔MYC-JX8MMA7核心板应用

随着通信与网络技术、互联网的发展&#xff0c;工业管理数据化、网络化、智能化已成大势所趋&#xff0c;利用工业物联网完成工业控制是智慧工厂中必不可少的一部分。传统的控制与数据采集系统&#xff0c;主机一旦需要同时与多个数据采集设备保持高速通信&#xff0c;并要承担…

Golang【Web 入门】 07 路由 - http.ServeMux

阅读目录说明ServeMux 和 Handler重构&#xff1a;区分不同的 Handler查看 http.HandleFunc 源码重构&#xff1a;使用自定义的 ServeMuxhttp.ServeMux 的局限性URI 路径参数请求方法过滤不支持路由命名http.ServeMux 的优缺点标准库里的就是最好的&#xff1f;说明 goblog 需…

【运维心得】ApacheDirectory找不到java路径的解决方案

目录 ApacheDirectory是什么&#xff1f; 问题现象描述 解决步骤 总结 本文是因为没有在网上找到类似的问题和文章&#xff0c;只能依靠自己去解决&#xff0c;既然解决了&#xff0c;就应该分享一下&#xff0c;希望能帮到需要的朋友。 ApacheDirectory是什么&#xff1f…

火山引擎 DataTester 揭秘:字节如何用 A/B 测试,解决增长问题的?

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 上线六年&#xff0c;字节跳动的短视频产品——抖音已成为许多人记录美好生活的平台。除了抖音&#xff0c;字节跳动旗下还同时运营着数十款产品&#xff0c;从资讯…

人工智能在网络安全中的重要性

介绍&#xff1a; 人工智能&#xff08;AI&#xff09;是计算机科学的一个分支&#xff0c;基于某些独特的算法和相关数学计算&#xff0c;使机器能够拥有人类的决策能力。另一方面&#xff0c;网络安全包括保护虚拟世界免受网络攻击和威胁的安全措施。人工智能能够通过采取与…

第二十一章《万年历》第1节:万年历项目简介

万年历项目实现的是一款日历软件,它能够展示出任意年份的日历,除此之外,该软件还能以红色字体标出每个月的阳历节日。 21.1.1万年历功能简介 万年历软件的运行结果如图21-1所示。 图21-1万年历软件界面 为方便讲述,此处把这个万年历的界面分成了4个区域,每个区域当中都有…

【优化发电】基于matlab差分进化算法求解单库发电优化问题【含Matlab源码 2253期】

⛄一、差分进化算法简介 如同所有的优化算法一样, 差分进化算法基于种群的进化算法。差分进化算法主要的参数主要有种群规模NP, 解空间的维数D, 缩放因子F和交叉概率Cr。D维矢量XGi[xGi,1, xGi,2, …, xi, DG], i1, 2, …, Np, 表示G代第i个个体。变异和交叉操作在每一代中产生…

NIO-ServerSocketChannel和Tomcat

ServerSocketChannel 面向流的侦听套接字的可选通道。 通过调用此类的open方法创建服务器套接字通道。 无法为任意预先存在的ServerSocket创建通道。 新创建的服务器套接字通道已打开但尚未绑定。 尝试调用未绑定的服务器套接字通道的accept方法将导致抛出NotYetBoundExcepti…

达梦数据库通过作业实现自动备份功能

达梦数据库通过作业实现自动备份功能作业功能简介一、通过DM管理工具创建备份作业(图形化配置)1.创建代理环境2.创建作业二、命令行方式配置备份作业案例1.创建代理环境2.全量备份3.增量备份4.备份清理三、JOB 运行和日志查看作业功能简介 在管理员的工作中&#xff0c;有许多…

安卓APP源码和设计报告——好再来点餐

大作业文档 项目名称&#xff1a;好再来点餐专业&#xff1a;班级&#xff1a;学号&#xff1a;姓名&#xff1a; 目 录 一、项目功能介绍3 二、项目运行环境3 1、开发环境3 2、运行环境3 3、是否需要联网3 三、项目配置文件及工程结构3 1、工程配置文件3 2、工程结构…

STC - 同时外挂扩展RAM和12864时, C库函数失效的问题

文章目录STC - 同时外挂扩展RAM和12864时, C库函数失效的问题概述笔记原理图 - 外挂XRAM原理图 - 12864错误现象总结ENDSTC - 同时外挂扩展RAM和12864时, C库函数失效的问题 概述 在写STC15实验箱4的出厂测试程序. 发现memset(buf, 0, 256)一片256字节的xdata内存时, 无法将这…

生产型企业如何搭建进销存管理系统?低代码平台了解一下

生产型企业在激烈的市场竞争中充分意识到信息化管理的重要性&#xff0c;但限于资金压力无法购买或开发大型的ERP 系统整合企业管理的小型企业而言&#xff0c;比较多的采用部署相对独立的小型信息系统提高管理信息化水平&#xff0c;常见的包括采购管理系统、销售管理系统、库…

Ubuntu开机自动挂载SD卡到指定挂载点并将Docker默认存储路径改为SD卡

Ubuntu开机自动挂载SD卡到指定挂载点并将Docker默认存储路径改为SD卡查看磁盘信息查看磁盘原挂载点永久开机自动挂载分区——修改文件/etc/fstab应用挂载修改docker默认存储路径查看磁盘信息 sudo fdisk -l如果磁盘太多可以用 sudo fdisk -l | grep GiB只看以GB为单位的磁盘&…

【D3.js】2.2-给 Circle 元素添加属性

title: 【D3.js】2.2-给 Circle 元素添加属性 date: 2022-12-02 15:19 tags: [JavaScript,CSS,HTML,D3.js,SVG] 上章节中虽然添加了circle&#xff0c;但是因为缺少某些属性设置而显得不可见&#xff0c;在此章节中将学习circle的cx、cy、r属性。 一、学习目标 circle的x坐标与…

带你玩转序列模型之NLP与词嵌入(一)

目录 一.词汇表征 二.使用词嵌入 三.词嵌入的特性 四.嵌入矩阵 五.学习词嵌入 一.词汇表征 上周我们学习了RNN、GRU单元和LSTM单元。本周你会看到我们如何把这些知识用到NLP上&#xff0c;用于自然语言处理&#xff0c;深度学习已经给这一领域带来了革命性的变革。其中一…

嵌入式 ADC使用手册完整版 (188977万字)(附源码详细篇)

嵌入式 ADC使用手册完整版 &#xff08;188977万字&#xff09;&#x1f49c;&#xff08;附源码详细篇&#xff09;&#x1f49c;【1】ADC简介【2】ADC主要特征【3】ADC引脚和内部信号【4】ADC 模块框图【5】ADC校准&#xff08;CLB&#xff09;【6】ADC 时钟【7】ADCON 开关【…

Gomodule和GoPath

GoLang生态系统 什么是GOROOT GOROOT 是环境变量&#xff0c;它的值是 Golang 安装包路径 什么是GOPATH GOPATH 是Golang 1.5版本之前一个重要的环境变量配置&#xff0c;是存放 Golang 项目代码的文件路径。 可以通过go env命令查看 GOPATH目录 进入GOPATH目录&#xff…

【Docker】redis分片集群搭建:3主3从,容错迁移,扩缩容

Docker是基于Go语言实现的云开源项目。Docker的主要目标是**“Build&#xff0c;Ship and Run Any App,Anywhere”**。也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理&#xff0c;使用户的APP&#xff08;可以是一个WEB应用或数据库应用等等&#xff09;及其运…

2022 ios APP最新iOS开发上架测试教程

2022 ios APP最新开发测试教程 本文详细介绍最新的在windows上进行ios app开发编译打包安装到手机测试的完整流程。介绍ios开发经常遇到的问题和解决方法&#xff0c;包括ios开发证书&#xff0c;ios开发描述文件等。 2.Apple开发常用的三个网址&#xff1a; 开发者中心&#x…