问题标签 [testng-dataprovider]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
11699 浏览

java - 如何使用 TestNG DataProvider 传递 > 10 个参数?

我需要将 10 多个参数传递给 TestNG Dataprovider,并且代码看起来像这样......

谁能告诉我如果我们需要传递超过 10 个参数,我们应该采用什么方法@DataProvider?有没有其他方法来声明测试方法的参数?

0 投票
2 回答
310 浏览

java - 依赖方法和@Factory

我难住了。我已经阅读了许多在线主题,似乎无法找到我正在寻找的解决方案。

我想要的是在一个循环中并行运行测试,这样一个测试生成数据,另一个测试使用数据。

我发现传入的 ITestContext 对于在测试之间存储测试数据很有用。但是,当使用 dependsOnMethod 时,所有数据生成测试都会在第一个依赖方法运行之前运行。

有没有办法指定 @Factory 和 @DataProvider 的组合来实现我想要的?

测试输出:

DataDependencyTest1 构造函数

字符串:默认测试名称

DataDependencyTest1 构造函数

字符串:字符串 1

DataDependencyTest1 构造函数

字符串:字符串 2

测试名称:Test_DependencyInjection_GenerateTestData

创建创建测试数据

字符串:字符串 1

将数据添加到当前测试上下文

测试名称:Test_DependencyInjection_GenerateTestData

创建创建测试数据

字符串:字符串 2

将数据添加到当前测试上下文

测试名称:Test_DependencyInjection_ExtractData

从测试上下文中提取数据

字符串:字符串 2

测试名称:Test_DependencyInjection_ExtractData

从测试上下文中提取数据

字符串:字符串 2

现在问题来了……

_ExtractData()每次运行_GenerateTestData()测试方法时,测试都会运行。但是,依赖性测试似乎只在循环的最后一次迭代中运行。

我如何制作这样的测试序列:

Test_DependencyInjection_GenerateTestData——使用“String1”

Test_DependencyInjection_ExtractData——使用“String1”

Test_DependencyInjection_GenerateTestData——使用“String2”

Test_DependencyInjection_ExtractData——使用“String2”

0 投票
1 回答
596 浏览

java - 在 TestNG 中为 DataProvider 的每个值运行多个方法

我有一堆使用 DataProvider 作为参数运行的 TestNG 测试。

我的跑步者看起来像这样:

因此,假设我有来自 Dataprovider 的两个参数(param1 和 param2),则测试按以下顺序执行:

有没有办法让它运行每个参数的所有测试用例。即,执行应该如下:

test1 和 param1 test2 with param1 test1 with param2 test2 with param2

0 投票
1 回答
1117 浏览

java - 在 testng 中延迟加载数据提供者

我正在尝试为我的测试实现数据提供程序的延迟加载,但它不起作用。下面是我的工厂注释方法的代码片段:

  • 实际输出:

    通过 1 个迭代器实例 TF 实例创建:1 通过 2 个迭代器实例 TF 实例创建:2 通过 3 个迭代器实例 TF 实例创建:3 通过 4 个迭代器实例 TF 实例创建:4 [TestNG] 运行:命令行套件

    通过 1 作为 DP 测试方法执行:DP1 拆除:1 通过 1 作为 DP 测试方法执行:DP1 通过 2 作为 DP 测试方法执行:DP2 拆除:2 通过 1 作为 DP 测试方法执行:DP1 通过 2 作为 DP 测试方法执行:DP2通过3作为DP测试方法执行:DP3拆解:3通过1作为DP测试方法执行:DP1通过2作为DP测试方法执行:DP2通过3作为DP测试方法执行:DP3通过4作为DP测试方法执行: DP4 拆解: 4

    ================================================= 命令行套件

    总测试运行:10,失败:0,跳过:0

  • 预期产出

    通过 1 个迭代器实例 TF 实例创建:1 通过 1 作为 DP 测试方法执行:DP1 拆除:1 通过 2 个迭代器实例 TF 实例创建:2 通过 1 作为 DP 测试方法执行:DP1 通过 2 作为 DP 测试方法执行:DP2 撕裂Down:2通过3迭代器实例TF实例创建:3通过1作为DP测试方法执行:DP1通过2作为DP测试方法执行:DP2通过3作为DP测试方法执行:DP3 Tear Down:3通过4迭代器实例TF实例创建:4通过1作为DP测试方法执行:DP1通过2作为DP测试方法执行:DP2通过3作为DP测试方法执行:DP3通过4作为DP测试方法执行:DP4拆解:4 [TestNG]运行:命令行套件

    ================================================= 命令行套件

    总测试运行:10,失败:0,跳过:0

这是 TestNG 实现中的错误还是 Factory 不支持延迟加载.. TIA

0 投票
2 回答
38148 浏览

excel - 如何在 Selenium WebDriver 中使用 Java 和 TestNG 中的 DataProvider 读取 excel 表中的多组值

我对 Selenium WebDriver 相当陌生。我编写了代码来使用数据提供程序从 excel 表中读取登录凭据和值。它贯穿第一个设置数据(登录功能),完美地给了我绿色状态栏。

在我的应用程序中,登录后,我想通过从同一个 Excel 表中发送索引和选择(在管理方法中)来选择值,但我未能读取值。对于硬编码值,它工作正常。

谁能给我一个想法如何写它。用过的 Excel 表:

下面是我的代码:

}

0 投票
2 回答
1075 浏览

testng - 如何保留数据提供者中的数据顺序?

情况:我有两个测试 a() 和 b()。使用“dependsOnMethods”参数使 b() 依赖于 a()。我对这两个测试都有不同的数据集。有没有办法确保在执行测试时保留数据的顺序?

例子:

我希望结果始终是 Google、Apple、Microsoft、Yahoo。或微软、雅虎、谷歌、苹果

但不是 Google、Yahoo、Microsoft、Apple 或 Google、Microsoft、Apple、Yahoo。

这意味着如果 test1 使用来自其数据提供者的第一组参数运行,则 test2 也应该使用来自其数据提供者的第一组参数运行。test1 的 dataprovider 中的第二组参数是否在第一组之前运行并不重要,只要第二个测试在运行第一组之前也使用其 dataprovider 中的第二组参数运行即可。有没有办法做到这一点?

刚刚意识到这可以通过使用 group-by-instances 参数来解决。(我在我的 testng xml 中找到了一个选项,因为我使用的是旧版本。)。我将尝试升级我的 testNg 并发布更新。

0 投票
1 回答
141 浏览

testng - 获取测试输入以测试服务层 CRUD 操作

我有一个服务层,其中包含将数据插入数据库、更新数据和从数据库删除数据的方法,这些方法调用 DAO 层来定义这些方法。在客户端包中,我有一个测试类,用于获取调用服务层的操作的用户输入。

我的服务类如下所示:

和测试类如下所示:

现在我想编写一个测试类来使用 TestNG 测试我的方法。我不知道如何使用@DataProvider为插入操作提供输入以使用更多输入调用它一次。

0 投票
1 回答
750 浏览

java - 如何验证 dataprovider 是否为空?

我们如何验证我们得到的 dataprovider (dataProvider="DataSet_Sheet1") 是否为空。因此,我们将跳过该行并继续下一行。

因为如果我们编写了任何程序来从 Excel 表中获取数据并且它没有任何记录,那么运行完整的函数就没有意义了吗?

0 投票
1 回答
4447 浏览

selenium-webdriver - @Configuration on 方法之前需要参数“browserType”,但尚未在 src\test\resources\testng.xml 中定义

在运行 Selenium 案例时,我希望 firefox 和 chrome 在同一个版本中。我的 testng.xml :

还有我的测试用例:

但我得到一个错误:

运行的时候,browserType=firefox,就通过了。但是当 browserType=chrome 时,它​​失败了。我不能同时使用@Parameters 和 DataProvider 吗?当我将案例更改为:

它通过了!为什么?谢谢。

0 投票
2 回答
13065 浏览

java - 如何从csv文件将参数传递给testng中的数据提供者

我正在从 csv 文件中读取数据,我已经测试了该数据将作为输入。我希望它作为每组值的 tescase 运行。因为我正在使用数据提供程序问题是,它只使用最后一组数据,请帮助我调试代码

它只取最后一行 name3 id3 text3 并且只运行一次测试而不是三次。