诱惑测试NG:使用@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();
    }
}

预期: 测试一 测试二 测试三

实际: 我的测试 我的测试 我的测试

尝试使用

       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");
    }

最新更新