[英]Store dataprovider parameters as array in test method in testng
[英]Allure TestNG: Custom test method names while using @DataProvider
我在 java testng 测试中使用 allure-testng(2.12.1) 适配器。 我有使用@DataProvider 的测试。 我的测试实现 ITest 以在运行时更改测试方法实例名称。 当我运行测试时,我看到不同的测试方法名称,但在 allure-report 中,它为每次测试运行显示相同的测试方法。 如何配置诱惑报告以显示类似于 IDE?
@Listeners({AllureTestNg.class, EmailableReporter.class})
public class AllureTests implements ITest {
private ThreadLocal<String> testName = new ThreadLocal<>();
@Override
public String getTestName() {
return testName.get();
}
@BeforeMethod(alwaysRun = true)
public void BeforeMethod(Method method, Object[] testData){
testName.set(testData[0].toString());
}
@Test (dataProvider = "testData")
@Description("Hi")
public void myTest(String value){
Assert.assertNotNull(value);
System.out.println(String.format("Test Instance Name: %s", Reporter.getCurrentTestResult().getTestName()));
}
@DataProvider(name = "testData")
public Iterator<Object[]> getTestAPICases() {
List<Object[]> testList=new ArrayList<Object[]>();
testList.add(new Object[]{"testOne"});
testList.add(new Object[]{"testTwo"});
testList.add(new Object[]{"testThree"});
return testList.iterator();
}
}
预期:testOne testTwo testThree
实际:myTest myTest myTest
尝试使用
AllureLifecycle lifecycle = Allure.getLifecycle();
//change test name to "CHANGED_NAME"
lifecycle.updateTestCase(testResult -> testResult.setName("CHANGED_NAME"));
您可以通过在 @Test 方法中编写以下代码在运行时更改测试用例名称:
@Test
public void test1()
{
AllureLifecycle lifecycle = Allure.getLifecycle();
lifecycle.updateTestCase(testResult -> testResult.setName("CHANGED_NAME"));
log.ifo("Changing test case name");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.