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

hir*_*sht 11 java testng selenium automation selenium-webdriver

对于我正在进行的研究,我需要在运行@AfterMethod的测试方法(@Test)后捕获结果状态(Passed/Failed).

我一直在使用import 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");
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

控制台中的结果:

[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]
Run Code Online (Sandbox Code Playgroud)

我的期望是将测试结果变为一个变量以通过开关,如上面的代码片段所示,并在测试方法失败时打印"====== FAIL =====".

有人能帮助我抓住每个测试方法(@Test)的执行测试结果.如果我接近的方法是错误的,请帮助我使用正确方法的代码片段.

先感谢您

noo*_*oor 11

去做就对了:

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();
   }

}
Run Code Online (Sandbox Code Playgroud)

}


小智 8

TestListenerAdapter对每个这样的情况下,方法(成功,跳过,失败).我的建议是让你自己的听众这样.

public class MyTestResultListener extends TestListenerAdapter {

    @Override
    public void onTestFailure(ITestResult result) {
        // do what you want to do
    }

    @Override
    public void onTestSuccess(ITestResult result) {
        // do what you want to do
    }

   @Override
    public void onTestSkipped(ITestResult result) {
        // do what you want to do
    }
}
Run Code Online (Sandbox Code Playgroud)

然后将您的监听器添加到测试类.

@Listeners(MyTestResultListener.class)
public class MyTest {

// your tests

}
Run Code Online (Sandbox Code Playgroud)