如何从TestNG结果或ITestContext中删除任何测试

时间:2019-10-10 22:37:37

标签: testng testng-dataprovider testng-annotation-test

背景: 我正在使用TestNG DataProvider

要求: 执行完毕后,需要从TestNG报告中删除1个测试。

我的解决方案: 假设我需要从报告中删除“ XYZ”测试用例。

String testName = "XYZ";

private void removeTestFromResult(ITestContext context)
    {
        for (ITestNGMethod testMethodName : context.getAllTestMethods())
        {
            String testMethod = testMethodName.getMethodName().toLowerCase();

            if (testMethod.contains(testName))
            {
                if (context.getPassedTests().size() > 0)
                {
                    context.getPassedTests().removeResult(testMethodName);
                }
                if (context.getFailedTests().size() > 0)
                {
                    context.getFailedTests().removeResult(testMethodName);
                }
                if (context.getSkippedTests().size() > 0)
                {
                    context.getSkippedTests().removeResult(testMethodName);
                }
            }
        }
    }

2 个答案:

答案 0 :(得分:1)

如果要执行测试并将其从结果报告中隐藏,可以查看一下TestNG TestListenerAdapter。执行后可以修改测试上下文,例如从中删除不需要的测试。有关详细示例,请参见this link

TestListenerAdapter:

public class MyTestListenerAdapter extends TestListenerAdapter {

    @Override
    public void onFinish(ITestContext context) {
        //TODO remove the unwanted tests from context.getPassedTests()
    }
}

测试:

@Listeners(MyTestListenerAdapter.class)
public class MyTest {
    //Your test methods here.
}

Here是所有TestNG侦听器的文档。这些也可能有用。

答案 1 :(得分:0)

在@Test批注中,可以将enabled = false设置为避免执行:

https://testng.org/doc/documentation-main.html#annotations