How can I search and return the values and pass it to the method from spock table

爷,独闯天下 提交于 2019-12-14 03:34:41

问题


Currently implementing GEB,Spock,Groovy. I come across the scenario like

There is a set of data's in the spock table. I have to pass the modulename as a parameter, Search from the spock table then return two values user id and password. Below code is skeleton code

My question is how to search module name based on parameter? How to return two data's ?

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 ==

}
        }

If you provide the code it would be great help to learn and imeplement.


回答1:


You don't need to search the table yourself or pick that data. Spock will do that automatically for you

In the expect: block just write your unit test that uses Module, User_Name and Pass_word. Spock will automatically run the test 3 times (as many as the rows of the table) passing each row in turn to your test.

Remove the argument ModuleName from the test method. It is not needed.

I suggest you read the Spock documentation on Data Driven tests a bit more.




回答2:


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 ==

    }
}

What Spock will do is run your test one time for each row in the data table from the "where" block, passing Module, User_Name, Pass_Word as parameters and assert your expectations in the "expect" block.

Please refer to Spock Data Driven Testing documentation for more details.



来源:https://stackoverflow.com/questions/39763657/how-can-i-search-and-return-the-values-and-pass-it-to-the-method-from-spock-tabl

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!