当前位置: 首页 > 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.dtcms.com/a/269927.html

相关文章:

  • iOS 性能测试工具全流程:主流工具实战对比与适用场景
  • 5-Kafka-replication(副本机制)概念
  • 自动化一次通过率
  • 《Java 反射全攻略1》
  • LLM探索的时代
  • Java常用加密算法详解与实战代码 - 附可直接运行的测试示例
  • 【Flutter】面试记录
  • 从历史航拍图像中去除阴影
  • maven 发布到中央仓库之 Ignore Licence-04
  • RabbitMQ第一章(MQ基础与RocketMQ使用手册)
  • 【踩坑实录】RabbitMQ 高并发异常“爆仓”事故还原与配置优化实战指南
  • Next.js 实战笔记 2.0:深入 App Router 高阶特性与布局解构
  • SQLShift 重磅更新:支持 SQL Server 存储过程转换至 GaussDB!
  • 从深度学习的角度看自动驾驶
  • 半连接海外云策略:混合架构下的全球业务协同方案
  • 香港站群服务器价格怎么样?
  • 保姆级tomcat的页面部署(静态)
  • 【世纪龙科技】汽车零部件检验虚拟实训室-数字赋能职业教育
  • PHP诞生30周年
  • 文件传输安全保障:探索Hash校验的不同方法
  • 使用阿里云/腾讯云安装完成mysql使用不了
  • JavaScript中的Request详解:掌握Fetch API与XMLHttpRequest
  • 单稳态触发器Multisim电路仿真——硬件工程师笔记
  • imx6ull-裸机学习实验11——高精度延时实验
  • 铝板矫平机:精密平整的关键设备
  • AI 在生活中的应用:深度解析与技术洞察
  • [2025CVPR]SGC-Net:开放词汇人机交互检测的分层粒度比较网络解析
  • Java教程:【程序调试技巧】入门
  • Leetcode 3604. Minimum Time to Reach Destination in Directed Graph
  • Windows安装docker+Dify本地部署