如何使用不同的参数 运行 Spock spec 多次?

How to run Spock spec multiple times with different parameters?

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

此外,我想检查每个用户类型 5 个用户(这是主页中的过滤器)。所以我需要点击主页中的每个用户类型,然后 运行 spec 多次。

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

这是"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 or 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'] } 
}

只需创建您的变体作为子类。