当前位置: 首页 > 知识库问答 >
问题:

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

呼延河
2023-03-14

我在java testng测试中使用allure testng(2.12.1)适配器。我有使用@DataProvider的测试。我的测试实现了ITest,以在运行时更改测试方法实例名称。当我运行测试时,我看到了不同的测试方法名称,但在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();
    }
}

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

实际:myTest myTest myTest

共有2个答案

符畅
2023-03-14

通过在@test method中编写以下代码,可以在运行时更改测试用例名称:

 @Test
    public void test1()
    {
    AllureLifecycle lifecycle = Allure.getLifecycle();
    lifecycle.updateTestCase(testResult -> testResult.setName("CHANGED_NAME"));
    log.ifo("Changing test case name");
    }
凌翔宇
2023-03-14

尝试使用

       AllureLifecycle lifecycle = Allure.getLifecycle();
//change test name to "CHANGED_NAME"
       lifecycle.updateTestCase(testResult -> testResult.setName("CHANGED_NAME"));
 类似资料:
  • 是否可以为每个测试方法指定来自DataProvider的数据。我做过这样的东西。 有没有更好的方法?我可以为两种测试方法指定一个数据集吗?谢谢

  • 我正在从事一个需要以编程方式调用TestNG(使用数据提供程序)的项目。情况很好,只是在报告中,我们得到了@测试方法的名称,这是一种处理许多情况的通用方法。我们希望在报告中得到一个有意义的名字。 我一直在研究这个问题,发现了三种方法,但不幸的是,所有方法都失败了。 1) 实施ITest 我在这里和这里都发现了这个 我一输入@Test方法就设置了我想要的名称(对于我尝试的所有3种方式,这就是我设置名

  • 问题内容: 我一直在寻找一种在测试方法中使用多个DataProvider的方法。我的情况如下: 假设我们有一个DataProvider类: 现在,在我的Test方法中,我要针对方案的所有组合运行: 绿广场 红方格 绿三角 红三角 鉴于我无法使用注释指定多个DataProvider,因此应如何在代码中实现此目标 问题答案: 由于缺乏更好的方法,我决定坚持解决方法。这是如何实现上述方案的示例: 这样,

  • 我最近为Thymeleaf编写了一个自定义方言以及一个自定义处理器,以处理一些自定义标记,并在某些情况下用不同的标记替换它们,但我在编写处理器测试时遇到了问题: 类需要重写 方法,这是我需要测试的方法。 因为我的处理器涉及从获取变量,所以我尝试模拟它;但是,、和类都声明为final,这意味着它们不能被Mockito模拟。 我真的不想实例化一个实际的对象,因为它依赖于其他5个无法模拟的对象,我最终会

  • 我使用的是Spring Framework4.1.6版本,带有Spring web services,不带Spring Boot。为了学习这个框架,我正在编写一个REST API,并进行测试,以确保从命中一个endpoint收到的JSON响应是正确的。具体地说,我正在尝试调整的以使用“带下划线的小写”命名策略。 我正在使用Spring的博客中详细介绍的方法创建一个新的并将其添加到转换器列表中。具体

  • 我试图用RobolectRic2.1.1运行单元测试,但我无法让它膨胀自定义布局(例如,ViewPagerIndicator类)。假设这是我的布局: 其结果是: 我的最后一招是尝试使用影子类: 并使用。这再次导致 你们能给我指出正确的方向吗?我没主意了。多谢了。