我的测试课中有很多Test方法。我的目标是具有两次使用断言的能力:在每个Test中第一次,在每个AfterMethod测试中第二次。
这是我的代码示例:
@AfterMethod(alwaysRun = true )
public void reportTestFail() {
String a = getAllParameters().get("A");
if (a.contains("1")) {
asserter.fail("1 is found in parameters");
}
else {
asserter.assertTrue(true,"Test passed");
}
}
为什么每次测试结束时我总是配置失败?
我不能在Test方法之外断言吗?
答案 0 :(得分:0)
在这种情况下,您应该使用TestNG IInvokedMethodListener2或IInvokedMethodListener
(对于TestNG版本7+),并在afterInvocation
中进行其他验证。在实现此方法时,应在try-catch
块中编写断言,而在catch块中,应将testMethod状态设置为fail并设置异常。例如:
public void afterInvocation(IInvokedMethod method, ITestResult testResult, ITestContext context){
try{
//perform addition validations
}catch(Exception e){
//assertion failed
//update testResult to fail
}
}
要修改测试用例的结果,请参考qaf中的代码。