java接口自动化系列(05):测试数据注入到测试方法

发布时间 2023-12-23 21:10:47作者: 全栈测试笔记

 

注入测试数据

这里我们是数据驱动方式,把数据注入到测试方法

上一篇我们已经把用例数据封装到对象并放到list中,这里我们把用例对象list中的对象分别放到Object类型的一维数组中,再把一维数组添加到新对象类型一维数组的list中

然后我们在测方法中打印获取到的用例数据,看获取到的数据对不对

修改BaseCase.java

package com.qzcsbj.autotest.testcase;

import com.qzcsbj.autotest.entity.CaseData;
import com.qzcsbj.autotest.entity.Variable;
import com.qzcsbj.autotest.utils.ExcelUtil;
import org.apache.log4j.Logger;
import org.testng.annotations.*;
import org.testng.annotations.Optional;
import java.util.*;

/**
 * @博客 : www.cnblogs.com/uncleyong
 * @微信 : ren168632201
 * @描述 : <BaseCase>
 */

public class BaseCase{
    public static Logger logger = Logger.getLogger(BaseCase.class);

    // 保存所有用例对象
    public static List<CaseData> cases = new ArrayList<CaseData>();

    // 存放变量对象的列表
    public static List<Variable> variables = new ArrayList<Variable>();


    @Parameters({ "excelPath", "dataSheetName", "variableSheetName"})
    @BeforeTest
    public void readDataFromExcel(@Optional("caseData/caseData.xlsx") String excelPath, @Optional("case") String dataSheetName, @Optional("variables") String variableSheetName){
        logger.info("excelPath: " + excelPath);
        logger.info("dataSheetName: " + dataSheetName);
        logger.info("variableSheetName: " + variableSheetName);
        cases = ExcelUtil.loadExcel(excelPath, dataSheetName, CaseData.class);
        variables = ExcelUtil.loadExcel(excelPath, variableSheetName, Variable.class);
        // logger.info("读取文件获取到的cases对象:" + cases);
        // logger.info("读取文件获取到的variables对象:" + variables);
        // VariableUtil.loadVariablesToMap(variables);
    }

    @DataProvider(name = "datasFromExcel")
    public Iterator<Object[]> getCaseDatas(){
        List<Object[]> apiDataList = new ArrayList<Object[]>();
        for (CaseData caseData : cases){
            apiDataList.add(new Object[] { caseData });
        }
        return apiDataList.iterator();
    }

    @Test(dataProvider = "datasFromExcel", timeOut = 600000)
    public void test(CaseData caseData){
        // 获取对象中的数据
        String url = caseData.getUrl();
        String requestType = caseData.getRequestType();
        String headers = caseData.getHeaders();
        // String cookies = caseData.getCookies();  // 暂未涉及
        String parameters = caseData.getParameters();
        // String uploadFile = caseData.getUploadFile();  // 暂未涉及
        String initSql = caseData.getInitSql();
        String globalVariables = caseData.getGlobalVariables();
        String assertFields = caseData.getAssertFields();

        logger.info("url: " + url);
        logger.info("requestType: " + requestType);
        logger.info("headers: " + headers);
        logger.info("parameters: " + parameters);
        logger.info("initSql: " + initSql);
        logger.info("globalVariables: " + globalVariables);
        logger.info("assertFields: " + assertFields);
    }
}

  

结果

运行testng.xml可以看到,用例数据注入到测试方法了