基于Docker构建CI/CD工具链(六)使用Apifox进行自动化测试

添加测试接口

在Spring Boot Demo项目里实现一个简单的用户管理系统的后端功能。具体需求如下:

  1. 实现了一个RESTful API,提供了以下两个接口 :

    • POST请求 /users:用于创建新的用户。
    • GET请求 /users:用于获取所有用户的列表。
  2. 创建新用户功能:

    • 用户可以通过向 /users 发送 POST 请求来创建新用户。
    • 新用户的信息通过请求体以 JSON 格式提供,包括用户的姓名和年龄。
  3. 获取所有用户列表功能:

    • 用户可以通过向 /users 发送 GET 请求来获取所有已创建用户的列表。
    • 服务器将返回一个包含所有用户信息的 JSON 数组。
  4. 用户对象定义:

    • 用户对象由姓名和年龄两个属性组成。
    • 用户对象的定义嵌套在 UserController 类内部,仅在该类中可见。
package com.copier.springbootdemo.rest;import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;@RestController
@RequestMapping("/users")
public class UserController {// 用于存储用户对象的列表private List<User> users = new ArrayList<>();// 创建新用户的端点@PostMappingpublic User createUser(@RequestBody User user) {users.add(user); return user;}// 获取所有用户的端点@GetMappingpublic List<User> getAllUsers() {return users; }// 表示用户的内部类static class User {private String name;private int age;public String getName() { return name; }public void setName(String name) { this.name = name; }public int getAge() { return age; }public void setAge(int age) { this.age = age; }}
}

构建Apifox Docker镜像

编辑如下内容的Dockerfile,从FROM node:18.13.0的基础镜像开始构建一个新的镜像,然后在其中安装了apifox-cli。

FROM node:18.13.0
RUN npm i -g apifox-cli@latest --registry=https://registry.npmmirror.com/

在同级目录下执行如下命令,构建工具镜像,有告警不要怕

 docker build -t docker.mvcode.cn:8083/apifox:1.0.0 .

请添加图片描述

使用如下命令测试镜像是否构造成功

 docker run --rm  docker.mvcode.cn:8083/apifox:1.0.0 apixfox -v

请添加图片描述

然后通过如下命令,将镜像推动到镜像库(如何构建镜像库点这里:Docker+nexus构建自己的制品库之(三)Docker仓库的使用)。推送到镜像库后我们就可以随便使用了。

 docker push docker.mvcode.cn:8083/apifox:1.0.0

请添加图片描述

准备测试用例

如何使用Apifox不是本文档所关注的内容,禁用截图演示整个过程项目的文档请移步Apifox帮助文档。

创建数据模型

请添加图片描述

添加用户接口和测试用例

查询接口

请添加图片描述

查询测试用例

请添加图片描述

新增用户接口

请添加图片描述

新增用户测试用例

请添加图片描述

测试环境

请添加图片描述

测试场景

请添加图片描述

运行测试

请添加图片描述

导出

根据图中所示将测试场景导出为“Apifox ClI格式”。
请添加图片描述

配置Gitlab CI/CD

新增测试脚本

将导出的文件放在项目的testcases目录下

请添加图片描述

#!/bin/bash
# 获取当前目录路径,用于后续挂载到 Docker 容器中
APP_ROOT=$(pwd)
mkdir report
docker run --rm \-v /home/copier/.m2/:/root/.m2/ \-v $APP_ROOT:/app \-w /app \docker.mvcode.cn:8083/apifox:1.0.0 apifox run -k \--out-dir ./report --out-file apitest -r html,cli \--env-var "serverURL=http://192.168.3.52:9999" \./testcases/usertest.apifox-cli

这段脚本主要用于在 Docker 容器中运行apifox镜像,执行 API 测试,并生成测试报告。

  1. APP_ROOT=$(pwd): 这一行代码将当前工作目录的路径保存在 APP_ROOT 变量中。

  2. mkdir report: 创建一个名为 report 的目录,用于存储测试报告。

  3. docker run --rm ...: 这是运行 Docker 容器的命令。下面是它的各个参数解释:

    • --rm: 表示当容器退出时立即删除容器。这有助于在容器结束后自动清理资源,防止垃圾文件的堆积。
    • -v /home/copier/.m2/:/root/.m2/: 将主机中的 /home/copier/.m2/ 目录映射到容器内的 /root/.m2/ 目录,这样容器内的 Maven 缓存可以重复使用。
    • -v $APP_ROOT:/app: 将主机中的 $APP_ROOT 目录映射到容器内的 /app 目录,这样容器就可以访问主机上的测试用例文件等资源。
    • -w /app: 指定容器的工作目录为 /app,这是为了确保后续的命令在正确的工作目录下执行。
    • docker.mvcode.cn:8083/apifox:1.0.0: 指定要运行的 Docker 镜像,其名称为 apifox,版本为 1.0.0
    • apifox run -k ...: 这是在容器内执行的具体命令,它启动了 apifox 工具来运行 API 测试。下面是各个参数的解释:
      • -k: 表示以非交互式模式运行,即不需要用户输入。
      • --out-dir ./report: 指定测试报告的输出目录为当前工作目录下的 report 目录。
      • --out-file apitest: 指定测试报告的文件名为 apitest
      • -r html,cli: 指定测试报告的格式为 HTML。
      • --env-var "serverURL=http://192.168.3.52:9999": 设置一个环境变量 serverURL,其值为 http://192.168.3.52:9999,这个环境变量可能会在测试过程中被用到。
      • ./testcases/usertest.apifox-cli: 指定要运行的测试用例文件路径。

Apifox CLI(Command Line Interface,即命令行界面)主要用来以命令行方式运行接口测试过程,具体参数参照:如何使用以及参数说明。

请添加图片描述

执行自动化测试

通过查看Gilab的流水线和作业我们可以查看运行结果。
流水线执行结果:
请添加图片描述

API测试结果:

请添加图片描述

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

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

相关文章

STC89C52学习笔记(十一)

STC89C52学习笔记&#xff08;十一&#xff09; 综述&#xff1a;本文讲述了直流电机以及PWM调速。 一、直流电机 1、特点 &#xff08;1&#xff09;直流电机能将电能转化位机械能。 &#xff08;2&#xff09;直流电机有两个电极&#xff0c;电极正接时&#xff0c;电机…

【核心完整复现】基于目标级联法的微网群多主体分布式优化调度

1 主要内容 之前发布了华电学报的复现程序《基于目标级联法的微网群多主体分布式优化调度》&#xff0c;具体链接为【防骗版】基于目标级联法的微网群多主体分布式优化调度&#xff0c;虽然对模型及结果进行了复现&#xff0c;但是部分模型细节和参数并没有完全实现&#xff0…

2024长三角快递物流高质量创新发展论坛

2024长三角快递物流供应链与技术装备展览会&#xff08;杭州&#xff09; 2024年7月8-10日 | 杭州国际博览中心 指导单位&#xff1a;浙江省邮政管理局 中国快递协会 主办单位&#xff1a;浙江省快递行业协会 联合主办&#xff1a;上海市快递协会 江苏省快递协会 安徽省快递…

ubuntu22下使用vscode调试redis7源码环境搭建

ubuntu22下使用vscode调试redis7源码环境搭建 ##vscode launch.json配置文件 {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息&#xff0c;请访问: https://go.microsoft.com/fwlink/?linkid830387"version": "0.2.0&…

【DL水记】循环神经网络RNN的前世今生,Transformer的崛起,Mamba模型

文章目录 RNN网络简介传统RNN网络结构RNN的分类 长-短期记忆网络 (LSTM)GRU网络横空出世的Transformer网络Self-AttentionVisionTransformer Mamba模型Reference: RNN网络简介 “当人类接触新事物时&#xff0c;他们不会从头开始思考。就像你在阅读这篇文章时&#xff0c;你会根…

目标检测笔记

目标检测笔记 one-stage和two-stage目标检测算法Two-Stage 目标检测算法One-Stage 目标检测算法既然Faster R-CNN使得候选区域生成和目标检测可以在同一个网络中端到端训练&#xff0c;为什么它还是属于Two-stage算法&#xff1f; 目标检测模型&#xff0c;训练中的正负样本是什…

根据ELK官网指引部署ELK- ECK-Elastic-​ Kibana​-Learn-ELK-(一)

**Attention: 1、You need open the ELK official website and step by step to deploy . 2、If you copy my command ,you must check them if it not match your environment . 一、official website Elastic documentation | Elastic Check there. 二、 ECK简介…

常用接口测试工具/免费api

一 接口编辑文档 常用的接口文档编写apipost 二 免费接口测试 api 1. thecat 含有&#xff1a; The Cat API - Cat as a Service The Cat API 2. public-apis 进入页面往下拉 三 常用接口测试工具 postman 四 常用接口性能测试工具 Jmeter&#xff0c;loadrunner

FRDM-MCXN947开发板之RGB灯

一、背景 RGB LED&#xff1a;通过红、绿、蓝三种颜色组合发光的LED&#xff0c;可以理解由三个不同发光属性的LED组成&#xff0c;这个是LCD平板显示原理的基础&#xff0c;一个LED相当于屏幕上面的一个像素 FRDM-MCXN947集成了一块RGB LED&#xff0c;它由三个GPIO口驱动&am…

2024 Guitar Pro 8.1.2-27 (x64) win/mac中文激活版破解版

吉他爱好者必备神器&#xff1a;Guitar Pro v8.1.1 Build 17深度解析 随着数字音乐制作和学习的日益普及&#xff0c;越来越多的吉他爱好者开始寻找能够帮助他们提升技能、创作音乐的专业工具。在众多吉他制作软件中&#xff0c;Guitar Pro因其强大的功能和易用的界面备受推崇…

Docker Image (镜像) 常见命令

Docker Image (镜像) 常用命令 docker images 功能&#xff1a;列出本地所有的镜像。如果镜像 ID 相同&#xff0c;但是 Tag 标签不同&#xff0c;也会被当作不同的条目被列出来。 语法&#xff1a; docker images [options] [REPOSITORY[:TAG]] 别名&#xff1a; docker ima…

如何对图像进行聚类

文章来源&#xff1a;https://medium.com/voxel51/how-to-cluster-images-6e09bdff7361 2024 年 4 月 10 日 使用 FiftyOne、Scikit-learn和特征嵌入 在 2024 年深度学习的计算密集型环境中&#xff0c;集群一词最常出现在讨论 GPU 集群时--高度优化的矩阵乘法机器的大规模集…

海洋信息管理系统:守护蓝色星球,促进海洋经济新发展

海洋&#xff0c;覆盖地球表面超过七成的广阔水域&#xff0c;是生命之源&#xff0c;也是经济发展的重要空间。然而&#xff0c;随着人类活动的增加&#xff0c;海洋生态环境面临严峻挑战&#xff0c;海洋资源的可持续利用成为全球关注的焦点。在这样的背景下&#xff0c;构建…

数字IC/FPGA——亚稳态及跨时钟域

什么是亚稳态亚稳态会造成什么平均故障间隔时间如何解决亚稳态同步时钟和异步时钟单bit电平信号如何跨时钟域单bit脉冲信号如何跨时钟域多bit信号如何跨时钟域 目录 一、亚稳态1.基本概念2.危害3.平均故障时间4.解决亚稳态的方法 二、跨时钟域1.同步电路和异步电路&#xff08;…

RNN知识体系构筑:详尽阐述其理论基础、技术架构及其在处理序列数据挑战中的创新应用

一、为什么需要RNN 尽管神经网络被视为一种强大且理论上能够近似任何连续函数的模型&#xff0c;尤其当训练数据充足时&#xff0c;它们能够在输入空间中的某个点( x )映射到输出空间的特定值( y )&#xff0c;然而&#xff0c;这并不能完全解释为何在众多应用场景中&#xff…

牛客2024【牛客赛文X】春招冲刺ONT61 每日温度【hard 单调栈 Java、Go、PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/1f54e163e6944cc7b8759cc09e9c78d8 思路 单调栈最直接的应用就是获取数组中每个位置i,i的左边第一个比i大或者小的位置/数以及,i的右边第一个比i大或者小的位置/数不懂的同学看这里https://blog.csdn.net/Borsl…

String类中常见面试题

1.string类属于基本类型吗&#xff1f; string类不是基本类型&#xff1b;它属于引用数据类型 2.操作字符串的类有哪些?有什么区别&#xff1f; 有三种&#xff1a;string,stringBuilder,stringBuffer 区别&#xff1a; String:不可变类&#xff0c;字符串一旦被创建就不能…

Unity打包出来的apk安装时提示应用程式与手机不兼容,无法安装应用程式

1、遇到的问题 * 2、解决办法 这是因为你在Unity中导出来的apk手机安装包是32位的&#xff0c;才导致上述问题发生&#xff0c;要解决这个办法&#xff0c;需要在Unity中导出64位的手机安装包。 32位跟64位的区别&#xff0c;以及如何区分打出来的手机安装包是否是32位或者是…

腐蚀Rust 服务端搭建架设个人社区服务器Windows教程

腐蚀Rust 服务端搭建架设个人社区服务器Windows教程 大家好我是艾西&#xff0c;一个做服务器租用的网络架构师也是游戏热爱者。最近在steam发现rust腐蚀自建的服务器以及玩家还是非常多的&#xff0c;那么作为服务器供应商对这商机肯定是不会放过的哈哈哈&#xff01; 艾西这…

Day:004(4) | Python爬虫:高效数据抓取的编程技术(数据解析)

XPath工具 浏览器-元素-CtrlF 浏览器-控制台- $x(表达式) Xpath helper (安装包需要科学上网) 问题 使用离线安装包 出现 程序包无效 解决方案 使用修改安装包的后缀名为 rar&#xff0c;解压文件到一个文件夹&#xff0c;再用 加载文件夹的方式安装即可 安装 python若使用…