Testng为通用测试方法动态更改测试名称

时间:2018-08-16 15:28:09

标签: testng

我有一种基于dataprovider的测试方法,该方法可以运行十次。.我想将测试的名称每次更改为一种有意义的自定义方法。.我该如何在testng中做到这一点

1 个答案:

答案 0 :(得分:0)

是的,可以根据数据提供者提供的数据将测试名称更改为在报告中显示。

由于@Test被视为方法,因此可以将@BeforeMethodalwaysRun=true一起使用,并将从数据提供者返回的数据与Method对象一起传递。在侧面,您可以用任何想要的方式自定义方法。

示例代码:(假设testData数组具有大于或等于7个要返回的索引)

@BeforeMethod(alwaysRun = true)
    public void setTestName(Method method, Object[] testData) {
        String testCaseName = testData[0] + "_MyTest_" + testData[1] + "_" + testData[3] + "_"
                + DateUtils.convertUnixToNormalDate(Long.parseLong(testData[4].toString()), "MM/dd/yyyy").replace(" ", "_")
                + "_to_" + DateUtils.convertUnixToNormalDate(Long.parseLong(testData[5].toString()), "MM/dd/yyyy").replace(" ", "_") + "_view_" + testData[7];
        System.out.println(method.getName() + testCaseName);
        testName.set(method.getName() + "_" + testCaseName);
    }

在这里,由于在使用数据提供程序时,测试可能会基于并行执行配置在多个线程中运行。 testName变量应为ThreadLocal

private ThreadLocal<String> testName = new ThreadLocal<>();

让我们知道它是否可以解决您的问题。