如何使用不同的参数多次运行 Spock 规范



我正在使用Groovy+Geb+Spock+Gradle框架编写自动化测试脚本。我有一个名为"UserProfilePageSpec"的规范来检查用户配置文件页面的UI,现在我想多次运行它以检查多个用户。我在那里添加了随机性,以便每次规范都会在列表中选择一个随机用户并导航到用户配置文件页面。

另外,我想检查每个用户类型(这是主页中的过滤器(5个用户。所以我需要在主页上单击每个用户类型,然后多次运行规范。

有时,当没有足够的时间来测试每种类型的多个用户时,我只需要测试一个用户,所以我有点想保留这个规范来测试一个用户本身,有人有实现这个的好主意吗?谢谢!

以下是"UserProfilePageSpec"的基本结构:

class UserProfilePageSpec {
    def setupSpec(){
        //login
        //select a random user
        //navigate to user profile page
    }
    def "test1"(){..}
    def "test2"(){..}
    def "test3"(){..}
    def "test4"(){..}
}

这在 Spock 中是不可能的,它有一些悬而未决的问题,例如 https://github.com/spockframework/spock/issues/407 或 https://github.com/spockframework/spock/issues/668

根据您的用例,您可以使用子类来模拟它。

abstract class UserProfilePageSpec {
    def setupSpec(){
        //login
        //select a random user
        //navigate to user profile page
    }
    abstract def getData()
    def "test1"(){..}
    def "test2"(){..}
    def "test3"(){..}
    def "test4"(){..}
}
class UserProfilePageVariation1Spec extends UserProfilePageSpec {
    def getData() { [username: 'foo', password: 'bar'] } 
}

只需将您的变体创建为子类即可。

最新更新