【问题标题】:How to run Spock spec multiple times with different parameters?如何使用不同的参数多次运行 Spock 规范?
【发布时间】:2018-01-11 23:52:02
【问题描述】:

我正在使用 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"(){..}
}

【问题讨论】:

    标签: gradle groovy spock geb


    【解决方案1】:

    这在 Spock 中是不可能的,它有一些未解决的问题,例如https://github.com/spockframework/spock/issues/407https://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'] } 
    }
    

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

    【讨论】:

    • 非常感谢!我担心我无法清楚地表达我的问题,但你的回答正是我想要的!我最终使用了继承,类似的想法,但使用了一个非抽象的父类。我在 UserProfilePageSpec 中创建了一个函数 selectUserType() 并在 setupSpec() 中调用它,并为每个用户类型创建了子类并在那里重写了 selectUserType() 函数。
    猜你喜欢
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 2022-01-09
    • 2016-07-16
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    相关资源
    最近更新 更多