当前位置: 首页 > news >正文

基于Java+Maven+Testng+RestAssured+Allure+Jenkins搭建一个接口自动化框架

测试用例的设计

测试用例的设计巧妙之处:

1、参照了Jmeter的参数化方式,将需要参数化的数据用${}包裹起来,后边在解析Excel时,对${}包裹起来的数据,用正则表达式等技术手段替换成实际环境变量的数据,从而实现了参数化设计

2、有一个提取表达式列,通过编写每个接口的JSON提取表达式,后边在解析Excel时,对接口执行后的响应数据用该表达式提取出来,保存到环境变量,如果某些接口需要前置接口的响应数据,我们就可以从环境变量中获取该数据出来,从而解决了接口关联的问题。

3、有一个数据库断言列,由于接口通常需要与数据库操作关联起来,那么通过数据库断言,可以使接口测试结果更加准确稳定。

接下来就进行实际框架搭建了。

一:首先在pom.xml中引入RestAssured、Testng、EasyPOI、fastJson依赖

   <!--RestAssured依赖-->
<dependency><groupId>io.rest-assured</groupId><artifactId>rest-assured</artifactId><version>4.2.0</version><scope>test</scope>
</dependency><!--Testng依赖-->
<dependency><groupId>org.testng</groupId><artifactId>testng</artifactId><version>7.0.0</version><scope>test</scope>
</dependency><!--easyPoi依赖,有两个坐标-->
<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-annotation</artifactId><version>4.2.0</version>
</dependency>
<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.2.0</version>
</dependency><!--fastJson依赖-->
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.70</version>
</dependency>

本次框架主要包:

common包:存放测试用例的基类,用于封装测试用例的共性操作

config包:存放项目的配置信息,像项目的域名信息、测试用例Excel路径等会在此处配置

enties包:存放项目的实体类

testcases包:存放测试用例

utils包:存放项目的工具类

二:我们现在先来解决测试用例的读取操作。

1、在src/test目录下新建一个resources资源目录,将测试用例放到该目录下

2、在entries包下新建一个CaseInfo实体类,实体类属性编写我们Excel测试用例所有列信息,每个属性用@Excel注解标注,该注解主要是EasyPOI可以用来映射对象属性信息,注意:@Excel里的name信息要与表头字段完全一致,否则无法映射。然后每个属性添加getter、setter方法,最后再添加一个toString方法。

package com.howentech.entries;import cn.afterturn.easypoi.excel.annotation.Excel;public class CaseInfo {@Excel(name = "序号(caseId)")private int caseId;@Excel(name = "接口模块(interface)")private String interfaceName;@Excel(name = "用例标题(title)")private String title;@Excel(name = "请求头(requestHeader)")private String requestHeader;@Excel(name = "请求方式(method)")private String method;@Excel(name = "接口地址(url)")private String url;@Excel(name = "参数输入(inputParams)")private String inputParams;@Excel(name = "期望返回结果(expected)")private String expected;@Excel(name = "数据库断言")private String dbAssert;@Excel(name="提取表达式(extractExper)")private String extractExper;public int getCaseId() {return caseId;}public void setCaseId(int caseId) {this.caseId = caseId;}public String getInterfaceName() {return interfaceName;}public void setInterfaceName(String interfaceName) {this.interfaceName = interfaceName;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getRequestHeader() {return requestHeader;}public void setRequestHeader(String requestHeader) {this.requestHeader = requestHeader;}public String getMethod() {return method;}public void setMethod(String method) {this.method = method;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public String getInputParams() {return inputParams;}public void setInputParams(String inputParams) {this.inputParams = inputParams;}public String getExpected() {return expected;}public void setExpected(String expected) {this.expected = expected;}public String getDbAssert() {return dbAssert;}public void setDbAssert(String dbAssert) {this.dbAssert = dbAssert;}public String getExtractExper() {return extractExper;}public void setExtractExper(String extractExper) {this.extractExper = extractExper;}@Overridepublic String toString() {return "CaseInfo{" +"caseId=" + caseId +", interfaceName='" + interfaceName + '\'' +", title='" + title + '\'' +", requestHeader='" + requestHeader + '\'' +", method='" + method + '\'' +", url='" + url + '\'' +", inputParams='" + inputParams + '\'' +", expected='" + expected + '\'' +", dbAssert='" + dbAssert + '\'' +", extractExper='" + extractExper + '\'' +'}';}
}

3、在config包下新建Contants类,填写项目的基本配置信息

package com.howentech.config;public class Contants {//项目访问地址public static final String PROJECT_URL="v.juhe.cn";//项目BASEURI
http://www.lryc.cn/news/582777.html

相关文章:

  • 谁主沉浮:人工智能对未来信息技术发展路径的影响研究
  • 基于 Rust 的Actix Web 框架的应用与优化实例
  • 从零构建MCP服务器:FastMCP实战指南
  • 基于物联网架构的温室环境温湿度传感器节点设计
  • 微信小程序控制空调之接收MQTT消息
  • Maven 打包排除特定依赖的完整指南(详细方法 + 示例)
  • 作业03-SparkSQL开发
  • 无缝矩阵的音频合成与音频分离功能详解
  • Rust BSS段原理与实践解析
  • RustFS一款Rust 驱动的 高性能 分布式存储系统
  • Modbus TCP转Profinet网关实现视觉相机与西门子PLC配置实例研究
  • Tomcat:启用https(Windows)
  • 传输层协议TCP、UDP
  • CI/CD — DevOps概念之实现k8s持续交付持续集成(一)
  • 数据结构:位图
  • IDEA Maven报错 无法解析 com.taobao:parent:pom:1.0.1【100%解决 此类型问题】
  • 分布式光纤传感:为储能安全保驾护航
  • 广度优先与深度优先遍历核心逻辑理解及实践
  • 关于 scrapy框架 详解
  • OpenCV在Visual Studio 2022下的配置
  • Android 中的多线程编程全面解析
  • 【机器学习笔记 Ⅲ】5 强化学习
  • 【docker】linux CentOS docker 安装流程
  • Centos和麒麟系统如何每天晚上2点10分定时备份达梦数据库
  • Redis:高性能内存数据库与缓存利器
  • java内存缓存实现 与 redis缓存实现 (ConcurrentHashMap 应用)
  • Mac安装Docker(使用orbstack代替)
  • 从深度学习的角度看自动驾驶
  • ubuntu24.04(vmware workstation 17.6pro)无法安装vmtools的问题解决
  • Using Spring for Apache Pulsar:Quick Tour