我有一种基于dataprovider的测试方法,该方法可以运行十次。.我想将测试的名称每次更改为一种有意义的自定义方法。.我该如何在testng中做到这一点
答案 0 :(得分:0)
是的,可以根据数据提供者提供的数据将测试名称更改为在报告中显示。
由于@Test
被视为方法,因此可以将@BeforeMethod
与alwaysRun=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<>();
让我们知道它是否可以解决您的问题。