junit5数据驱动
junit5官方文档:JUnit 5 用户指南
一、使用yaml文件实现junit5数据驱动:
1.在IDEA中新建一个工程,src的resources目录下新建一个yaml文件,如图所示:

2.在yaml文件中配置需要的参数,例如我们测试登录接口,测试不同的电话号码和密码是否可以登录,只需要在yaml文件中配置不同的电话号码和密码即可:

3.在测试用例方法前增加以下注解:

@ParameterizedTest
@CsvFileSource(resources ="/loginParameter.yaml")
public void loginTest2(String mobile,String password){
Response loginResponse = LoginTest.loginByiMobile(mobile,password);
Integer stateCode = loginResponse.path("stateCode");
String access_token=loginResponse.path("data.access_token");
// assertTrue (stateCode.equals(200));
assertAll("stateCode",
() -> assertEquals("200", stateCode.toString()),
() -> assertNotNull(access_token)
);
}
二、在注解中直接传参
@ParameterizedTest
@CsvSource({
"13531764015, 123456",
"18175465437, 123456",
"18475465438, 123456"
})
public void loginTest1(String mobile,String password){
Response loginResponse = LoginTest.loginByiMobile(mobile,password);
Integer stateCode = loginResponse.path("stateCode");
String access_token=loginResponse.path("data.access_token");
assertTrue (stateCode.equals(200));
System.out.println(access_token);
}
在传入多个参数后,如何对返回的多个结果进行断言呢?可以把需要断言的字段,也写在传参里面,例如要对返回的stateCode进行断言,代码如下:
@ParameterizedTest
@CsvSource({
"13536764011, 123456,200",
"18375465437, 123456,200",
"18575465438, 123456,500"
})
public void testLogin(String mobile,String password,String expectStateCode){
Response loginResponse = LoginTest.loginByiMobile(mobile,password);
Integer stateCode = loginResponse.path("stateCode");
String access_token=loginResponse.path("data.access_token");
assertTrue(stateCode.equals(Integer.valueOf(expectStateCode)));
System.out.println(access_token);
System.out.println(stateCode);
}

浙公网安备 33010602011771号