如何搜索并返回值并将其从spock表传递给方法

时间:2016-09-29 07:08:57

标签: groovy spock geb

目前正在实施GEB,Spock,Groovy。我遇到了像

这样的场景

spock表中有一组数据。我必须将modulename作为参数传递,从spock表中搜索然后返回两个值用户id和密码。下面的代码是骨架代码

我的问题是如何根据参数搜索模块名称? 如何返回两个数据?

Class Password_Collection extends Specification {

def "Secure password for search and Data Driven"(String ModuleName) {

   expect:
           // Search based on modulename in where
           // pick the values and return the picked data


            where:
            Module              | User_Name     | Pass_word
            login_Pass          | cqauthor1     | SGVsbG8gV29ybGQ =
            AuthorPageTest_Pass | cqauthor2     | DOIaRTd35f3y4De =
            PublisherPage_pass  | cqaauthor3    | iFK95JKasdfdO5 ==

}
        }

如果您提供代码,那么学习和改善将会很有帮助。

2 个答案:

答案 0 :(得分:0)

您不需要自己搜索表格或选择该数据。 Spock会自动为你做这件事

expect:块中,只需编写使用模块 User_Name Pass_word 的单元测试。 Spock将自动运行测试3次(与表的行数一样多),依次将每行传递给您的测试。

从测试方法中删除参数 ModuleName 。这不是必需的。

我建议您阅读有关数据驱动测试的Spock文档。

答案 1 :(得分:0)

class YourSpec extends Specification {
    def "Secure password for search and Data Driven"(Module, User_Name, Pass_Word) {
        expect:
        classUnderTest.getUserNameForModule(Module) == User_Name
        classUnderTest.getPasswordForModule(Module) == Pass_Word

        where:
        Module              | User_Name     | Pass_word
        login_Pass          | cqauthor1     | SGVsbG8gV29ybGQ =
        AuthorPageTest_Pass | cqauthor2     | DOIaRTd35f3y4De =
        PublisherPage_pass  | cqaauthor3    | iFK95JKasdfdO5 ==

    }
}

Spock将做的是从“where”块为数据表中的每一行运行一次测试,将Module,User_Name,Pass_Word作为参数传递,并在“expect”块中声明您的期望。

有关详细信息,请参阅Spock Data Driven Testing文档。