我正在尝试将我的第一个数据驱动测试框架放在一起,该框架通过 Selenium Grid/WebDriver 在多个浏览器上运行测试。现在,我在它自己的类中拥有每个测试用例,并且我对浏览器进行了参数化,因此它对每个浏览器运行每个测试用例一次。
这在大型测试框架中很常见吗?或者,是否应该将每个测试用例复制并微调到它自己的类中的每个浏览器?所以,如果我正在测试 chrome、firefox 和 IE,是否应该有每个类,例如:“TestCase1Chrome”、“TestCase1FireFox”、“TestCase1IE”?或者只是“TestCase1”并将测试参数化为每个浏览器运行 3 次?只是想知道别人是怎么做到的。
将测试参数化为每个测试用例的单个类可以更容易地维护非浏览器特定的代码,而复制类(每个浏览器用例一个)可以更容易地维护特定于浏览器的代码。当我说浏览器特定的代码时,例如,单击一个项目。在 ChromeDriver 上,您无法单击某些元素的中间,而在 FirefoxDriver 上,您可以。因此,您可能需要两个不同的代码块来单击一个元素(当它在中间不可单击时)。
对于那些使用 Selenium 的 QA 工程师,这里的最佳实践是什么?
最佳答案
我目前正在从事一个每天运行大约 75k - 90k 测试的项目。我们将浏览器作为参数传递给测试。原因是:
我看到的代码结构与您提到的代码结构之间的区别是,我没有每个测试用例的测试类。测试根据我测试的功能进行划分,每个功能都有一个类。该类将所有测试作为方法保存。我使用 testNG 以便可以并行调用这些方法。可能这不适合您的 AUT。
关于多个浏览器上的 Selenium Grid : should each test case have separate class for each browser?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14385052/