如何覆盖 TestNG 通过或失败结果
How to override TestNG pass or fail result
我正在使用 TestNG 运行 数据驱动测试
我的数据是从外部文件读取的
我有一个重试逻辑,本质上是同一个 class 中的不同测试方法,但只重试上一次测试中失败的实体。我正在使用 priority
控制它
Test(dataProvider="customTestDataProvider" , priority = 1)
public void testSomething(final ITestContext testContext , final CustomTestDataItem testData) throws CustomTestException{
setTestData(testData, testContext);
performStep1();
performStep2();
validateResult();
}
@Test(dataProvider="customTestDataProvider" , priority = 2)
public void testSomethingRetry1(final ITestContext testContext ,final CustomTestDataItem testData) throws CustomTestException{
testSomething(testContext , testData);
}
@Test(dataProvider="customTestDataProvider" , priority = 3)
public void testSomethingRetry2(final ITestContext testContext ,final CustomTestDataItem testData) throws CustomTestException{
testSomething(testContext , testData);
}
customTestDataProvider 知道该方法对哪个 testData 项失败,因此在 testSomethingRetry1
中只会提供失败的测试数据
如果测试方法在 testSomething
中失败,它将在 testSomethingRetry1
中重试,但 testNG 认为它失败,因为它在 testSomething
中失败
所以我需要一个自定义逻辑来确定套件是通过还是失败。我如何用我确定的结果覆盖 testNG 结果(pass/fail)?
我建议使用 org.testng.IRetryAnalyzer
而不是重复测试方法,它基本上会再次运行失败的测试。你可以在这里看到一些例子 http://seleniumeasy.com/testng-tutorials/execute-only-failed-test-cases-using-iretryanalyzer.
但是,如果您真的想覆盖结果,您可以使用侦听器并实现获得 ITestResult
的方法。在此对象中,您可以检查方法 class/name/result/etc。并更改其中一些属性(包括结果)。
http://testng.org/javadocs/org/testng/ITestListener.html
http://testng.org/javadocs/org/testng/IInvokedMethodListener.html
或整个测试套件
我正在使用 TestNG 运行 数据驱动测试
我的数据是从外部文件读取的
我有一个重试逻辑,本质上是同一个 class 中的不同测试方法,但只重试上一次测试中失败的实体。我正在使用 priority
控制它Test(dataProvider="customTestDataProvider" , priority = 1) public void testSomething(final ITestContext testContext , final CustomTestDataItem testData) throws CustomTestException{ setTestData(testData, testContext); performStep1(); performStep2(); validateResult(); } @Test(dataProvider="customTestDataProvider" , priority = 2) public void testSomethingRetry1(final ITestContext testContext ,final CustomTestDataItem testData) throws CustomTestException{ testSomething(testContext , testData); } @Test(dataProvider="customTestDataProvider" , priority = 3) public void testSomethingRetry2(final ITestContext testContext ,final CustomTestDataItem testData) throws CustomTestException{ testSomething(testContext , testData); }
customTestDataProvider 知道该方法对哪个 testData 项失败,因此在
testSomethingRetry1
中只会提供失败的测试数据如果测试方法在
中失败testSomething
中失败,它将在testSomethingRetry1
中重试,但 testNG 认为它失败,因为它在testSomething
所以我需要一个自定义逻辑来确定套件是通过还是失败。我如何用我确定的结果覆盖 testNG 结果(pass/fail)?
我建议使用 org.testng.IRetryAnalyzer
而不是重复测试方法,它基本上会再次运行失败的测试。你可以在这里看到一些例子 http://seleniumeasy.com/testng-tutorials/execute-only-failed-test-cases-using-iretryanalyzer.
但是,如果您真的想覆盖结果,您可以使用侦听器并实现获得 ITestResult
的方法。在此对象中,您可以检查方法 class/name/result/etc。并更改其中一些属性(包括结果)。
http://testng.org/javadocs/org/testng/ITestListener.html http://testng.org/javadocs/org/testng/IInvokedMethodListener.html
或整个测试套件