目前正在实施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 ==
}
}
如果您提供代码,那么学习和改善将会很有帮助。
答案 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文档。