使用Selenium Grid,核心java,testNG运行Selenium WebDriver测试脚本

时间:2014-02-03 07:05:08

标签: selenium testng

我想在不同的机器上同时运行我的测试用例(即跨浏览器测试),  如何在不使用@dataProvider testNG注释的情况下实现它,因为在我当前的项目中我使用@dataProvider将数据发送到我的测试用例?

1 个答案:

答案 0 :(得分:0)

一种选择是使用TestNG支持的XML配置文件运行TestNG测试。在XML文件中,您可以在测试套件规范中指定测试参数值。您可以为要测试的每个参数值组合复制指定测试套件的XML片段。然后,将这些参数参数设置为测试类构造函数,并使构造函数将它们保存为实例变量。

这消除了使用数据提供者的需要,但由于以下几个原因,这是一个丑陋的解决方案:

  • 您想测试测试参数的多个值组合;为此,您需要为要测试的每个参数值组合重复指定测试套件或测试类的XML片段
  • 标准报告工具不会显示每个测试使用的参数值
  • TestNG Eclipse插件中的一些其他工具(我使用的)也无法正常工作

我选择的选项如下。我仍然在我的各个测试中有测试参数,以及生成参数值的数据提供程序。所有测试的数据提供者都是相同的。它读取我自己设计的测试参数规范文件,为我测试中的每个测试参数列出我想要设置的值,然后生成参数值的所有组合。

(我想在测试之间重用WebDrivers,但每个参数值组合都需要自己的WebDriver。因此,我维护一个映射,将每个值组合映射到WebDriver;第一次使用特定组合调用测试时值,我创建相应的WebDriver并将其添加到映射;随后的所有时间,我重用映射中找到的驱动程序;当测试失败时,我将其拆除并从映射中删除;在所有测试完成后我撕下映射中所有剩余的WebDrivers。)

这允许我在一个地方指定测试参数及其值:我的规范文件。 也有缺点:

  • 从阅读测试代码中不清楚这些测试参数及其值是否与每个测试相同,并且所有数据提供者都会生成其值的所有组合并将其应用于每个测试
  • 测试依赖性出错:如果测试T依赖于测试S且S失败,则不应该完全跳过T,而只是跳过S失败的同一组参数值

因此,最好不要将dataProvider用于此目的。另一种方法是编写采用XML配置文件和我的测试参数规范文件的代码,并生成一个XML配置文件,其中包含每个测试参数值组合的测试套件。我没有这样做,因为我不知道如何将它集成到Eclipse TestNG插件支持的测试工作流程中。

我很困惑,TestNG似乎没有提供让我这样做的方法。当然,许多其他TestNG用户必须面对这个问题。我真的希望有一种比我正在使用的kludge更好的方式。

相关问题