Allure TestNG: 使用@DataProvider时自定义测试方法名称

3
我在我的Java TestNG测试中使用allure-testng(2.12.1)适配器。我的测试使用@DataProvider。我的测试实现了ITest以在运行时更改测试方法实例名称。当我运行测试时,我看到不同的测试方法名称,但在allure-report中,每个测试运行都显示相同的测试方法。如何配置allure报告以显示与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


你能添加一段代码,将 testName 写入控制台/标准输出的部分吗? - undefined
1
另外,我建议您编辑帖子并添加一个特定的标签,以指明您正在使用的框架的语言。 - undefined
嗨,我添加了代码来在@Test中打印testName。我正在使用Java语言的TestNG框架。 - undefined
2个回答

3
最初的回答。尝试使用。
       AllureLifecycle lifecycle = Allure.getLifecycle();
//change test name to "CHANGED_NAME"
       lifecycle.updateTestCase(testResult -> testResult.setName("CHANGED_NAME"));

我应该在哪里实现这个功能?在自定义的Allure监听器中吗? - undefined
你的回答已经过期,而且没有提供所有信息,所以我不会点赞。 - undefined

3
您可以通过在@Test方法中编写以下代码来在运行时更改测试用例名称:
 @Test
    public void test1()
    {
    AllureLifecycle lifecycle = Allure.getLifecycle();
    lifecycle.updateTestCase(testResult -> testResult.setName("CHANGED_NAME"));
    log.ifo("Changing test case name");
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接