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

DataProvider的单个实例可链接到具有选择性数据读取的多种测试方法

水焱
2023-03-14

场景:我html" target="_blank">构建了一个testNG类,其中包含多个测试方法一个excel读取方法。我希望根据excel表中的行数对所有测试方法进行迭代。此外,我希望有选择地利用测试方法中的数据值。ie所有列1值仅用于测试1。。所有列2值仅用于测试2中。。等等。。

我认为这不可能通过DataProvider的单个实例实现,这是我所希望的。

感谢您的帮助。

仅供参考,我将在此处粘贴编程逻辑:

我的编程代码:公共类示例{

@DataProvider(name = "dp")
public static Object[][] readExcel() {
    .
.
.
.
 return data;
}

@Test(dataProvider = "dp")    
public void test1(String a,String b) throws Exception {
System.out.println("test 1 OUTPUT IS "+ a);
    }

@Test(dataProvider = "dp")    
public void test2(String a,String b) throws Exception {
System.out.println("test 1 OUTPUT IS "+ b);
    }
}

{excel中的数据:第1行:sam miller第2行:peter paul

输出(当前即将到来):测试1输出为sam;测试1输出为peter;测试2输出为miller;测试2输出为paul;

输出(需要):测试1输出为sam;测试2输出为miller;测试1输出为peter;测试2输出为paul;}

共有1个答案

金霄
2023-03-14

您的数据提供者可以将您的方法作为输入。您可能可以使用TC name命名列标题,并且只在数据提供程序中获取列方法名称的值,例如

提供的TestNG文档:“如果您声明您的@DataProvider将java.lang.reflect.Method作为第一个参数,TestNG将通过第一个参数的当前测试方法。当多个测试方法使用相同的@DataProvider,并且您希望它根据为哪个测试方法提供数据返回不同的值时,这尤其有用。”

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

  • 问题内容: 我正在尝试为一个网站创建一个测试用例,其中包括带有3个链式选择的表单。加载网页时,默认情况下会填充第一选择。如果从第一个选择中选择了任何选项,则通过ajax调用填充第二个选择。以同样的方式,当在第二个选择项上选择一个选项时,则通过ajax调用填充第三个选择项。最后,在第三个选择上选择一个选项时,将在html表中填充我需要验证的信息。 三个相互关联的选择具有此结构 我肯定知道该网站使用J

  • 问题内容: 我已经在一个类的单个方法中初始化了InputStream,并将其传递给下一个方法进行处理。InputStream本质上封装了CSV文件以进行处理。 另一个方法调用传入同一个InputStream的2个不同方法,一个用于检索标头,另一个用于处理内容。该结构如下所示: 我在这里做错什么了吗?有什么方法可以在不同的方法调用之间重用InputStream。 我正在提出可以模仿以下问题的完整程序

  • 我有一个运行多个应用程序(服务)的Kubernetes环境。现在我有点困惑如何设置MySQL数据库实例。 根据不同的来源,每个微服务都应该有自己的数据库。我应该在高可用性模式下创建一个运行多个数据库的MySQL statefulset,还是应该为每个运行一个数据库的应用程序(服务)部署一个单独的MySQL实例。 我的第一个想法将是第一个选择,因此HA应该在哪里有用?我想听听大家对此有什么不同的看法

  • 问题内容: 我有一个接口,其实现包括单链接列表,双精度,循环等。我为单精度编写的单元测试应该对大多数双精度以及环形以及接口的任何其他新实现都有利。因此,JUnit不会为每个实现重复执行单元测试,而是提供一些内置的功能,让我拥有一个JUnit测试并针对不同的实现运行它吗? 使用JUnit参数化测试,我可以提供不同的实现,例如单,双,循环等,但是对于每个实现,都使用相同的对象执行类中的所有测试。 问题

  • 我的团队目前有几个试用版客户在使用我们的产品。当前将客户的数据库升级到最新版本的方法包括重新初始化数据库和手工重新创建客户配置,这并不多,但肯定很繁琐,并且会随着我们实施某种迁移策略而改变。 我的问题是,是否可以使用flyway(或其他一些工具)来管理我们产品的所有实例的数据库模式迁移,同时保留独立的实例数据?解决这类问题的最佳方法是什么。