我正在为网站测试编写基于Spock + Geb的测试。网站用于创建商品,稍后可以对其执行各种操作(确认,拒绝,撤销)。我已经创建了创建商品的工作方案。但是现在当我谈到需要为各种动作组合实现场景时,我希望能够重用"创建提议"在这些其他情况下。不幸的是,我无法找到任何例子或想办法如何做到这一点。有人可以给我任何想法吗?
顺便说一句,我需要按照预定义的顺序执行操作,以便在我的规范中使用逐步注释。
答案 0 :(得分:1)
如果没有看到代码示例,很难说,但这样做的一种方法是将您的操作方法(确认,拒绝,撤销)定义为Page类中的简单方法:
class ActionsPage extends Page {
static content = {
//Page content here
}
def confirm (){
//Code to perform confirm action on the page
}
def reject (){
//Code to perform reject action on the page
}
然后在您的规范类中,您可以
def "Test confirm action"(){
when: "we go to the actions pages"
to ActionsPage
and: "we perform a confirm action"
confirm()
then: "something happens"
//Code which checks the confirmation worked
}
这是有效的,因为Geb使用Groovy的方法缺少东西来在当前页面上找到名为" confirm()"的方法的名称,并将执行该代码。
如果操作很复杂并涉及导航到多个页面,最好为需要执行操作的测试创建一个抽象基类:
//Not @Stepwise
abstract class BaseActionsSpec extends Specification {
//Note: don't use Spock when/then blocks in these methods as they are not feature methods
protected void confirm(){
//Code to perform multi-page action
}
protected void reject(){
//Code to perform multi-page action
}
}
然后是扩展类:
@Stepwise
class ConfirmActionSpec extends BaseActionsSpec{
def "Test confirm action"(){
when: "we go to the actions pages"
to ActionsPage
and: "we perform a confirm action"
confirm() //calls method in super class
then: "something happens"
//Code which checks the confirmation worked
}
}