java接口自动化系列(05):测试数据注入到测试方法
本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/15867903.html
实现目标
这里我们是数据驱动方式,把数据注入到测试方法,在测试方法中就可以获取对象中的数据。
注入测试数据
上一篇我们已经把用例数据封装到对象并放到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可以看到,用例数据注入到测试方法了
__EOF__
本文作者:持之以恒(韧)
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!