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

发布于:2025-07-09 ⋅ 阅读:(20) ⋅ 点赞:(0)

测试用例的设计

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

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;
    }

    @Override
    public 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

网站公告

今日签到

点亮在社区的每一天
去签到