使用Spock数据表来测试Geb页面对象

时间:2017-10-26 18:00:54

标签: groovy spock geb

完全披露:我对Geb和Spock都很陌生。

作为我正在研究的测试套件的一部分,我们必须测试在几个页面元素上运行相同的测试。我希望能够使用Spock数据表来抽象这种行为。但是,当我这样做时,Geb抱怨它无法识别页面属性。

这是我正在谈论的一个简单的例子:

when:
textBox = value
submit()

then:"value is updated"
at SuccessPage
textBox == value

where:
textBox | value
box1    | val1
box2    | val2
box3    | val3

在此示例中,框1-3在 Page content 对象中定义。

这些测试在我独立完成时起作用,但在我使用数据表时则不行。为什么Geb元素没有被正确替换?

1 个答案:

答案 0 :(得分:5)

数据表在指定它们的测试的上下文之外执行。它们必须以这种方式执行,以了解如何基于它们实际构建测试的多个迭代。在该上下文中,box1未指向页面属性,因为您的浏览器尚未指向SuccessPage

要解决此问题,您需要使用内容名称(将是String的实例),并在适当的情况下将其解析为页面的属性:

when:
page."$textBox" = value
submit()

then:"value is updated"
at SuccessPage
page."$textBox" == value

where:
textBox | value
'box1'  | val1
'box2'  | val2
'box3'  | val3