Win YAPI + Jenkins 实现接口自动化测试

news2025/7/24 5:12:09

自动化测试

传统的接口自动化测试成本高,大量的项目没有使用自动化测试保证接口的质量,仅仅依靠手动测试,是非常不可靠和容易出错的。

 为了解决这个问题,使用YAPI接口自动化测试功能,只需要配置每个接口的入参和对 RESPONSE 断言,即可实现对接口的自动化测试,大大提升了接口测试的效率。

 第一步,测试集合

使用 YApi 自动化测试,第一步需要做得是创建测试集合和导入接口,点击添加集合创建,创建完成后导入接口(同一个接口可以多次导入)

 第二步,编辑测试用例

编写测试用例主要涉及两个方面,一个是请求参数,另外一个是断言脚本。

编辑请求参数 

请求参数可以填写期望的字符串,YApi 还提供了 Mock 参数和 变量参数。Mock参数用来生成随机字符串,变量参数是为了解决请求参数依赖其他接口的返回数据或参数。

Mock 参数 

Mock 参数每次请求都会生成随机字符串

 变量参数

YApi 提供了强大的变量参数功能,你可以在测试的时候使用前面接口的 参数 或 返回值 作为 后面接口的参数,即使接口之间存在依赖,也可以轻松 一键测试~

Tips: 参数只能是测试过程中排在前面的接口中的变量参数

格式:

 $.{key}.{params|body}.{path} 
 
例如:现有两个接口,分别是“导航标题”和“文章列表”

文章列表接口需要传参数: 当前标题(id),而这个 id 需要通过 导航标题 的返回值获取,这时应在 文章列表 的参数输入框中根据前者的 key 找到对应 id。

导航标题 的参数和返回值有如下结构:

参数:

返回值:

 则 文章列表 的参数可以如下配置:

其中 $. 是使用 动态变量 的标志,$.269.params 即表示 key 值为 269 用例的请求参数,$.269.body 即表示 key 值为 269 用例的返回值。

如果 requestBody 是 json 格式也可以在 json 中写变量参数,如下图:

Tips: 上下拖动测试集合的列表项可以调整测试的顺序。

目前 yapi 中的query,body,header和pathParam的输入参数已经支持点击选择功能。无需自己填写表达式,只需在弹窗中选择需要展示的表达式即可。

输入选项包括常量,mock数据,在测试集合中也支持变量选择。具体用法:单击编辑按钮打开表达式生成器,点击需要的数据创建表达式,这里也可以实时查看表达式结果。

 Tips: 在测试集合中插入变量参数可以会出现下图的提示信息,这是正常现象。因为该参数只能在各个接口顺序执行的时候才能拉到变量参数中的值

编写断言脚本

编写完请求参数,可通过 js 脚本写断言,实现精准测试,在接口用例页面点击 Test 编辑。

第三步,运行自动化测试

在测试列表可以看到每个测试用例的 key,还有 开始测试、报告等功能

点击开始测试会按照 case 定义的参数从上往下一个一个进行测试,如果顺序有问题,可以拖动调整

测试完成之后,点击报告查看该次请求的结果

断言脚本公共变量

1.assert

断言函数,详细 api 可查看 官方文档

常用 api

  • assert(value)

    判断 value 是否为 truth, 例如 assert(1) 通过, assert(0) 不通过,只要 value 不是 null, 0, false 等值验证通过

  • assert.equal(actual, expected)

    判断 actual 是否等于 expected,例如 assert(1, 1)通过

  • assert.notEqual(actual, expected)

    判断 actual 是否不等于 expected

  • assert.deepEqual(actual, expected)

    假设: actual = {a:1} 是一个对象,即便 expected = {a:1},如果使用 assert.equal 可能也是不相等的,因为在 js 引用的只是对象的一个指针,需要使用 assert.deepEqual 比较两个对象是否相等

  • assert.notDeepEaual(actual, expected)

    深度比较两个对象是否不相等

 2.status

http 状态码

 3.params

http request params, 合并了 query 和 body

 4.body

返回 response body

 5.header

返回 response header

 6.records

记录的 http 请求信息,假设需要获取 key 为 555 的接口参数或者响应数据,可通过 records[555].params 或 records[555].body 获取

 7.log

log(message) 函数,调试时使用,log 信息仅仅在断言失败后打印,失败断言前的信息

log(234)   assert.equal(status, 400)log(123) 

输出结果: log: 234
AssertionError: 200 == 400

示例 assert.equal(body.errcode, 0) assert.equal(body.data.group_name, 'testGroup') assert.equal(status, 200) 

服务端自动化测试

开始测试功能是在浏览器跑自动化测试,他依赖于浏览器的使用环境。服务端自动化测试功能是在YApi服务端跑自动化测试,不需要依赖浏览器环境,只需要访问 YApi 提供的 url 链接就能跑自动化测试,非常的简单易用,而且可以集成到 jenkins。

详细使用方法 

点击服务端测试,出现如下弹窗,用户访问该 url 就可以获取当前测试用例的所有测试结果。

配置通用规则

配置通用规则能够使自动化测试,可以基于通用的规则去控制,无需手动一个一个维护case.

Jenkins操作

1.点击示例工程api-auto-test

2.构建成功


3.点击控制台输出

4.查看报告

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

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

相关文章

网络类型以及数据链路层协议

网络类型以及数据链路层协议网络类型是根据我们数据链路层所运行的协议及规则来划分网络类型的分类P2P --- 点到点 --- point to pointMA --- 多点接入网络BMA --- 广播型多点接入网络NBMA --- 非广播型多点接入网络数据链路层协议MA网络以太网协议特点:需要使用MAC…

Java代码弱点与修复之——Explicit null dereferenced(显式空间接引用)

弱点描述 Explicit null dereferenced, 显示空间接引用。是 Coverity 静态代码分析工具检测到的一种中风险缺陷。这种缺陷通常发生在尝试使用空指针引用调用对象上的方法或访问属性时。 Explicit null dereferenced的缺陷可能会导致程序崩溃或产生不可预测的结果。 在Java语…

0102 MySQL05

1.约束 1.约束(constraint):在创建表时,可以给表中的字段加上一些约束,保证表中数据的完整性,有效性 常见的约束? 非空约束:not null 唯一性约束:unique 主键约束&am…

在VM16.X虚拟机上安装Android-X86 9.0

前提:电脑已安装好VM虚拟机, 第一步:下载好安卓9.0系统 https://www.fosshub.com/Android-x86.html 第二步:开始安装 1、新建虚拟机(按图片上的点一下步) 点浏览,确定虚拟机位置 处理器配置建…

深度剖析C语言预处理

致前行的人: 人生像攀登一座山,而找寻出路,却是一种学习的过程,我们应当在这过程中,学习稳定冷静,学习如何从慌乱中找到生机。 目录 1.程序翻译过程: 2.字符串宏常量 3.用宏定义充当注释符号 4…

【笔记】若依不分离的$.modal.open()打开多个子窗口,关闭子窗口刷新父窗口问题

前言 如题所述,当前遇到的问题是:我在若依不分离版的一个普通HTML页面A使用 $.modal.open()打开一个子窗口B,且在这个子窗口里再次使用 这个函数打开一个子窗口C,这时的情况就是 A 界面有子窗口 B, B 窗口又有一个子…

《系统架构设计》-06-面向领域思想和策略设计

文章目录1 面向领域思想1.1 架构设计与领域驱动1.1.1 领域驱动设计1.1.2 使用领域驱动设计的条件1.2 领域驱动设计核心概念1.2.1 策略维度1.2.2 技术维度2. 面向领域的策略设计2.1 通用语言2.2 领域与上下文2.2.1 架构轮回2.2.2 系统拆分子域界限上下文系统拆分策略2.2.3 上下文…

Mysql—主从复制

主从复制 创建mysql 基于docker创建2个mysql容器 1、拉取mysql镜像,这里拉取最新的8.0.20 docker pull mysql:latest2、使用镜像运行两个mysql容器:mysql 和 mysql-2 docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORDroot mysql …

Ubuntu系统升级16.04升级18.04

一、需求说明 作为Linux发行版中的后起之秀,Ubuntu 在短短几年时间里便迅速成长为从Linux初学者到实验室用计算机/服务器都适合使用的发行版,目前官网最新版本是22.04。Ubuntu16.04是2016年4月发行的版本,于2019年4月停止更新维护。很多软件支…

C++学习笔记之提高

目录C提高一.模板1.1.函数模板1.1.1语法1.1.2.普通函数与函数模板的区别1.1.3.普通函数与函数模板的调用规则1.1.4.模板的局限性1.2.类模板1.2.1.类模板与函数模板的区别1.2.2.类模板中的成员函数的创建时机1.2.3.类模板做函数的参数1.2.4.类模板与继承1.2.5.类模板成员函数类外…

cesium——飞行定位

Cesium的飞行定位,主要通过Viewer、Camera这两个类实现的。其中viewer.flyTo()、camera.flyTo()、camera.flyToBoundingSphere()这三个方法会有一个飞行动画的效果,所以会有飞行持续时间参数duration,默认是3秒。一、viewerflyTotarget&#…

电子台账:定义产品的行业代码和产品代码

1 简介水平过滤模板和垂直过滤模板定义好后,就可以进行数据抓取了。首次数据抓取后,用产品名称对产品代码表进行填充,程序会提示补充完善产品代码表,需要人工对产品代码表中的信息进行完善。产品代码表补充完整后,以后…

【微信小程序】如何使用阿里巴巴的icon自定义图标以及简单的下拉框组件实现全过程

前言 小编我将用CSDN记录软件开发之路上所学的心得与知识,有兴趣的小伙伴可以关注一下!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!让我们在成长的道路上互相学习,让我们共…

CUDA By Example笔记--线程协作

1--使用线程实现GPU上的矢量求和 完整代码&#xff1a; # include <iostream> # define N (33 * 1024)__global__ void add(int* a, int* b, int* c){int tid threadIdx.x blockIdx.x * blockDim.x;while (tid < N){c[tid] a[tid] b[tid];tid blockDim.x * grid…

pyqt 小项目

此项目是别人用Q开发的&#xff0c;我模仿用Pyqt编写。仿写过程种发下c 和python在调用时还是有些不一样。遇到行不通时就要多尝试别的方法。不如在C里可以直接在cpp文件里传入QBrush和QPen对象&#xff0c;而在python里就不行&#xff0c;估计使用信号与槽可以&#xff08;本人…

IfcRepresentationContext 与 IfcRepresentation

IfcRepresentationContext 与 IfcRepresentation 1. IfcRepresentationContext IfcRepresentationContext 定义了成果&#xff08;Product&#xff09;的IfcRepresentation相关上下文。 The IfcRepresentationContext defines the context to which the IfcRepresentation of…

通过堆栈分析深拷贝、浅拷贝、赋值的差异

前言数据类型分为&#xff1a;基本数据类型String、Number、Boolean、Null、Undefined、Symbol对象数据类型Object、Array基本数据类型的特点&#xff1a;直接存储在栈(stack)中的数据引用数据类型的特点&#xff1a;存储的是该对象在栈中引用&#xff0c;真实的数据存放在堆内…

云原生时代顶流消息中间件Apache Pulsar部署实操之轻量级计算框架

文章目录Pulsar Functions(轻量级计算框架)基础定义工作流程函数运行时处理保证和订阅类型窗口函数定义窗口类型滚动窗口滑动窗口函数配置函数示例有状态函数示例窗口函数示例自定义函数开发定义原生语言接口示例Pulsar函数SDK示例Pulsar Functions(轻量级计算框架) 基础定义 …

实验一:递归

1.铺砖 题目描述&#xff1a; 对于一个2行N列的走道。现在用12或22的砖去铺满。问有多少种不同的方式&#xff08;请用递推方式求解&#xff09;。如果N很大&#xff0c;需要高精度计算。下图是一个2行17列的走道的某种铺法&#xff1a; 输入要求&#xff1a; 一个整数N&a…

GitHub Copilot 全新升级,工作效率提升 55%

2021年 6 月&#xff0c;GitHub 和 OpenAI 推出了 GitHub Copilot 预览版&#xff0c;可根据命名或者正在编辑的代码上下文为开发者提供代码建议&#xff0c;被称为“你的 AI 结对程序员”。 近日&#xff0c;GitHub 宣布&#xff0c;经过去年 12 月以来的短暂测试后&#xff…