就是比如这样,我有一个 Test 测试方法,根据他返回的结果再执行不同的测试方法,比如说 Test 返回结果 1 就接着执行 Test1 方法,返回结果 2 就执行 Test2,我不能把它们都放在一个测试方法里,因为后续的方法需要用 data-provider
用反射
—— 来自 TesterHome 官方 安卓客户端
testng 本身似乎没有提供动态选择执行方法的功能(也可能是我孤陋寡闻了);你可以考虑把 Test 的执行结果传递给 test1/2 两个方法,内部再做具体处理逻辑;
另外为什么后续要用到 dataprovider 就不能放同一个方法
也不一定要用反射啊,根据不同的结果调用不同的方法有什么问题?在方法 A 中拿到结果,根据结果判断来调用 b 还是 c 有什么问题?
说了半天是为了控制测试方法执行啊,同一个类的测试方法执行顺序控制用 dependsOnMethods 就行了,至于不同测试方法之间的参数传递,同一个类内用变量,不同类之间用文件,Redis 读写都可以
刚翻了一下,testng 本身有提供了获取测试上下文的方式
@Test
public void a1(){
return;
}
@Test
public void a2(){
return;
}
@Test
public void b(ITestContext itc){
IResultMap irm=itc.getPassedTests();
Set<ITestResult> itr= irm.getAllResults();
for(ITestResult i:itr){
System.out.println(i.isSuccess());
}
}
图中获取了 a1/a2 两个用例的执行结果,你可以看下 ITestContext 内提供的方法是否满足你的需求
抹去的是公司信息
你的意思是要 dataprovider 动态提供不同参数?可以将 ITestContext 注入到 dataprovider 中来实现
testng 中 dataprovider 是需要时才生成的;