我有一个Selenium测试,它是在Spock框架的帮助下执行的。一般来说,它看起来像这样:
class SeleniumSpec extends Specification {
URL remoteAddress // Address of SE grid
Capabilities caps // Desired capabilities
WebDriver driver // Web driver
def setup() {
driver = new RemoteWebDriver(remoteAddress, caps)
}
def "some test" () {
expect:
driver.findElement(By.cssSelector("p.someParagraph")).text == 'Some text'
}
// other tests go here ...
}
这里的要点是,我的规范描述了某些组件的行为(在大多数情况下 - Web视图/页面)。因此,期望这些方法实现一些与业务相关的逻辑(如同点击按钮并期望在另一个字段中的消息);但另一件事,我想测试的是确保所有浏览器(功能)中的行为完全相同。
为了在“理想”世界中实现这一目标,我希望有一种机制来指定,应该多次使用特定的测试类,但是使用一些不同的参数。但就目前而言,我认为只能为单一方法应用数据集。
我只提出了几个实现这一点的想法(根据我目前对Spock框架的了解):
我很感激,如果有人遇到这种情况并且可能提出想法,如何正确组织测试过程。有人也可以发现其他方法,或者专业人士。上述对比。考虑另一个测试工具也可以选择。
答案 0 :(得分:1)
您可以创建一个包含所有功能的摘要BaseSpec
,但不要在该规范中设置驱动程序。然后为您要测试的每个不同浏览器创建一个子规范,例如。
class FirefoxSeleniumSpec extends BaseSeleniumSpec{
setupSpec(){
super.driver = new FirefoxDriver(...)
}
}
然后您可以运行所有子规范来测试所有浏览器