我想在不同的机器上同时运行我的测试用例(即跨浏览器测试), 如何在不使用@dataProvider testNG注释的情况下实现它,因为在我当前的项目中我使用@dataProvider将数据发送到我的测试用例?
答案 0 :(得分:0)
一种选择是使用TestNG支持的XML配置文件运行TestNG测试。在XML文件中,您可以在测试套件规范中指定测试参数值。您可以为要测试的每个参数值组合复制指定测试套件的XML片段。然后,将这些参数参数设置为测试类构造函数,并使构造函数将它们保存为实例变量。
这消除了使用数据提供者的需要,但由于以下几个原因,这是一个丑陋的解决方案:
我选择的选项如下。我仍然在我的各个测试中有测试参数,以及生成参数值的数据提供程序。所有测试的数据提供者都是相同的。它读取我自己设计的测试参数规范文件,为我测试中的每个测试参数列出我想要设置的值,然后生成参数值的所有组合。
(我想在测试之间重用WebDrivers,但每个参数值组合都需要自己的WebDriver。因此,我维护一个映射,将每个值组合映射到WebDriver;第一次使用特定组合调用测试时值,我创建相应的WebDriver并将其添加到映射;随后的所有时间,我重用映射中找到的驱动程序;当测试失败时,我将其拆除并从映射中删除;在所有测试完成后我撕下映射中所有剩余的WebDrivers。)
这允许我在一个地方指定测试参数及其值:我的规范文件。 也有缺点:
因此,最好不要将dataProvider用于此目的。另一种方法是编写采用XML配置文件和我的测试参数规范文件的代码,并生成一个XML配置文件,其中包含每个测试参数值组合的测试套件。我没有这样做,因为我不知道如何将它集成到Eclipse TestNG插件支持的测试工作流程中。
我很困惑,TestNG似乎没有提供让我这样做的方法。当然,许多其他TestNG用户必须面对这个问题。我真的希望有一种比我正在使用的kludge更好的方式。