Automated tests 是否可以使用GEB对集合中的每组数据运行相同的测试?
我希望将所有用户数据保存到一个集合中,并让GEB对每组数据运行相同的测试。我是这样想的Automated tests 是否可以使用GEB对集合中的每组数据运行相同的测试?,automated-tests,spock,geb,Automated Tests,Spock,Geb,我希望将所有用户数据保存到一个集合中,并让GEB对每组数据运行相同的测试。我是这样想的 import geb.spock.GebReportingSpec import spock.lang.* class MyFirstTestSpec extends GebReportingSpec { def setupSpec() { def userData = //an array of hashes but if it work I really do not care
import geb.spock.GebReportingSpec
import spock.lang.*
class MyFirstTestSpec extends GebReportingSpec {
def setupSpec() {
def userData = //an array of hashes but if it work I really do not care what type of collection is used
}
def 'run app'() {
given:
to LoginPage
userName = 'MasterUser'
password = 'APassword'
login.click()
at HomePage
when:
userData.each{
to ProfilePage
first = it['first']
mi = it['mi']
last = it['last']
...... More data
}
then: 'did it work'
at ReviewPage
amount1 == it['amount1']
amount2 == it['amount12']
...... More checks
}
}您是否考虑过将用户数据移动到位置:块
import geb.spock.GebReportingSpec
import spock.lang.*
class MyFirstTestSpec extends GebReportingSpec {
def setupSpec() {
}
def 'run app'() {
given:
to LoginPage
userName = 'MasterUser'
password = 'APassword'
login.click()
at HomePage
when:
to ProfilePage
first = firstName
mi = midName
last = lastName
...... More data
then: 'did it work'
at ReviewPage
reviewFirstName == firstName
amount1 == amount1
amount2 == amount12
...... More checks
where:
firstName | midName | lastName | amount1 | amount12
Robert | John | Brown | 100 | 20
...more data
这种结构的唯一特点是每次迭代都需要启动登录过程。如果您不喜欢,那么您可以使用where:块,并将给定的:块移到setupSpec()中fixture method.您可以在where块中运行closure,并返回执行此操作所需的每个变量的列表-然后您可以在任何位置导航,并在测试开始之前执行所需的任何预处理。