尝试使用断言运行AfterMethod

时间:2019-03-04 14:23:33

标签: java selenium testng

我的测试课中有很多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方法之外断言吗?

1 个答案:

答案 0 :(得分:0)

在这种情况下,您应该使用TestNG IInvokedMethodListener2IInvokedMethodListener(对于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中的代码。