如何在@AfterMethod中从TestNG / Selenium获取测试结果状态?

hirosht:

为了进行研究,我需要从@AfterMethod运行测试方法(@Test)后捕获结果状态(“通过” /“失败”)。

我一直在使用导入org.testng.ITestResult; 我的研究成果使访问多个在线博客后使我的工作变得更加轻松,但是,即使断言失败了,似乎并没有像预期的那样成功,因为结果输出总是通过

我的代码如下:

public class SampleTestForTestProject {
ITestResult result;

@Test(priority = 1)
public void testcase(){

    // intentionally failing the assertion to make the test method fail 
    boolean actual = true;
    boolean expected = false;
    Assert.assertEquals(actual, expected);

}

@AfterMethod
public void afterMethod()  {

    result = Reporter.getCurrentTestResult();

    switch (result.getStatus()) {
    case ITestResult.SUCCESS:
        System.out.println("======PASS=====");
        // my expected functionality here when passed
        break;

    case ITestResult.FAILURE:
        System.out.println("======FAIL=====");
        // my expected functionality here when passed
        break;

    case ITestResult.SKIP:
        System.out.println("======SKIP BLOCKED=====");
        // my expected functionality here when passed
        break;

    default:
        throw new RuntimeException("Invalid status");
    }
  }
}

结果在控制台中:

[TestNG] Running:  C:\Users\USER\AppData\Local\Temp\testng-eclipse--988445809\testng-customsuite.xml

======PASS=====

FAILED: testcaseFail
java.lang.AssertionError: expected [false] but found [true]

我的期望是将测试结果转换为变量以通过开关,如上面的代码片段所示,并在测试方法失败时显示“ ====== FAIL =====”。

有人能够帮助我捕获每种测试方法(@Test)的执行测试结果。如果我采用的方法不正确,请帮助我提供一段代码,以正确的方法。

先感谢您

年轻:

去做就对了:

public class stacktest  {


@Test
public void teststackquestion() {

    boolean actual = true;
    boolean expected = false;
   Assert.assertEquals(actual, expected);

}


@AfterMethod
public void afterMethod(ITestResult result)
{
    try
 {
    if(result.getStatus() == ITestResult.SUCCESS)
    {

        //Do something here
        System.out.println("passed **********");
    }

    else if(result.getStatus() == ITestResult.FAILURE)
    {
         //Do something here
        System.out.println("Failed ***********");

    }

     else if(result.getStatus() == ITestResult.SKIP ){

        System.out.println("Skiped***********");

    }
}
   catch(Exception e)
   {
     e.printStackTrace();
   }

}

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在testng @AfterMethod中检测测试失败

在testng中的@BeforeMethod和@AfterMethod中获取当前正在执行的@Test方法名称

如何在TestNG中禁用整个单元测试?

如何在TestNG中的测试之间共享变量?

如何在DataProvider中获取testng类参数

如何在Swift 3中测试URL并获取状态代码?

JUnit5-如何在AfterTestExecutionCallback中获取测试结果

如何将TestNG测试与TeamCity中的Selenium集成?

如何在testng for selenium中使浏览器的打开(在一个浏览器中全部测试)静态

如何修复pingdom测试结果中的“阻止”状态?

从DO状态中的查询中获取结果

如何获取输入状态以进行流量测试

Jest / React - 如何在函数中测试 useState 状态更新的结果

Selenium Webdriver:如何在终端(在MAC中)中运行testNG.xml文件?

TestNg:如何在测试套件中运行特定测试以对不同的参数重复n次

如何在Selenium WebDriver中使用TestNg?

JUnit 4.11在@After中获取测试结果

如何在Python Selenium中实现类似TestNG的功能或在一个测试套件中添加多个单元测试?

如何在 testng 报告中包含测试用例所有者名称

我如何在 TestNG 中运行来自同一类的多个测试用例

如何在python中的Selenium Chrome Web驱动程序中获取状态代码

如何在Play测试中从基于InputStream的结果中获取内容

如何在Azure DevOps Pipelines中的变量中获取单元测试结果?

如何从Play框架的结果中获取状态代码

如何在testng可电子邮件报告中获取断言错误?

如何在颤振中测试状态?

如何在测试中更改反应状态

如何在React中测试状态变化?

如何跳过或忽略TestNG中的测试执行