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

TestNG迭代测试数据而不是测试方法

麹高远
2023-03-14

当将DataProvider与多个TestNG方法一起使用时,每个方法都按顺序与所有数据集一起运行。相反,我希望迭代数据集,并在每次迭代中执行所有方法。我不关心结果是否显示了每个测试方法的结果或每个方法运行的总结。

我已经试过了

order-by-instances="true"
public class TestNGTest
{
    @DataProvider(name = "dp")
    public Object[][] createData(Method m) {
      return new Object[][] { new Object[] { "Cedric" }, new Object[] {"Martina"}};
    }

    @Test(dataProvider = "dp")    
    public void test1(String s) throws InterruptedException {
        System.out.println("test1 " + s);
        Thread.sleep(1000);
    }

    @Test(dataProvider = "dp")
    public void test2(String s) throws InterruptedException {
        System.out.println("test2 " + s);
        Thread.sleep(1000);
    }
}
test1 Cedric
test1 Martina
test2 Cedric
test2 Martina
PASSED: test1("Cedric")
PASSED: test1("Martina")
PASSED: test2("Cedric")
PASSED: test2("Martina")

所需的结果:

test1 Cedric
test2 Cedric
test1 Martina
test2 Martina
PASSED: test1("Cedric")
PASSED: test2("Cedric")
PASSED: test1("Martina")
PASSED: test2("Martina")

共有1个答案

田昊天
2023-03-14

请尝试使用以下侦听器GroupByInstanceEnabler。您可以将这个侦听器放在测试类(或者测试基类(如果有的话))的Listeners注释中,或者更简单更好的解决方案是将它放在META-INF中,让TestNg使用ServiceLoader加载它(http://TestNg.org/doc/documentation-main.html#listeners-service-loader)

这将允许您摆脱suite.xml,只需要在类路径上保留这个元INF和使能器。无论何时运行任何测试,它都将被加载--不需要配置任何IDE之类的东西,创建要运行的套件--它总是将加载您的侦听器即开箱即用。

import org.testng.ISuite;
import org.testng.ISuiteListener;

public class GroupByInstanceEnabler implements ISuiteListener {

    @Override
    public void onStart(ISuite suite) {
        suite.getXmlSuite().setGroupByInstances(true);
    }

    @Override
    public void onFinish(ISuite suite) {

    }
}

帕韦尔

 类似资料:
  • 我正在使用TestNG数据提供程序读取数据池。xls文件,在名为ReadData的类中包含1017个测试用例和214列。 然后,我将214个String参数传递到名为Enterprise Data的单独类中的@Test注释中。 我在@Test中创建了一个for循环,只执行ceratin迭代的操作(比如1-10),它总共只输入10个测试用例。我的问题是,在运行结束时,它仍然显示“Total test

  • 主要内容:1. 使用XML传递参数,2. 通过@DataProvider传递参数,3. @DataProvider + 方法,4. @DataProvider + ITestContextTestNG中的另一个有趣的功能是参数化测试。 在大多数情况下,您会遇到业务逻辑需要大量测试的场景。 参数化测试允许开发人员使用不同的值一次又一次地运行相同的测试。 TestNG可以通过两种不同的方式将参数直接传递给测试方法: 使用 使用数据提供者 在本教程中,我们将向您展示如何通过XML 或将参数传递给方法。

  • 我试图使用XML和TestNG运行一个测试套件,但是我总是同时使用Eclipse和命令行得到相同的消息: 该文件已正确读取,但测试似乎没有运行。 以下是我的testng.xml的内容: 这是我的目录结构在Eclipse中的样子: 此外,这也是我试图通过命令行运行测试套件的方式: 我尝试过通过eclipse清理项目,但似乎没有帮助。我也试过跑步: < code>mvn clean,但它也没有完成工作

  • debug populate 测试利器,快速产生大量的key 127.0.0.1:6379> debug populate 10000 OK 127.0.0.1:6379> dbsize (integer) 10000

  • 问题内容: 我有一系列要在电子商务平台上测试的商店,并且每个商店都具有要针对其自动化测试的一系列属性。是否可以有一个数据提供程序在整个测试套件中提供数据,而不仅仅是在TestNG中提供测试?我试图不使用testNG.xml文件作为机制,因为这些属性直接来自数据库调用。 我需要自动执行以下操作: @Test在当前数据集行中使用用户名和密码登录。 @Test验证StoreName和items-stor

  • 主要内容:1. CharUtil类,2. TestNG @DataProvider示例另一个TestNG参数测试示例,是使用注解。 1. CharUtil类 创建一个将字符转换成ASCII或者副词的类,如何使用TestNG来做单元测试? 打开 Eclipse 创建一个 Maven 工程: ParameterTesting,其目录结构如下所示 - 类文件:CharUtils.java 的代码如下 - 2. TestNG @DataProvider示例 要测试它,创建一个接受两个参数(