我有一个测试规范,可以与唯一的数据集一起运行。最佳做法尚不清楚。如何修改下面的代码以使其运行:
@Stepwise
class marktest extends ShopBootStrap {
private boolean useProductionUrl = false
def "Can Access Shop DevLogin page"() {
// DevStartLogin: 'New OE Start' button click
setup:
println System.getProperty("webdriver.chrome.driver")
when:
to ShopDevStartPage
then:
at ShopDevStartPage
}
def "on start enrollment, select 'United States' and click 'continue' button"() {
when: "enter Sponsor ID and click New OE Start"
to ShopDevStartPage
sponsorId.value(ShopDevStartPage.SPONSORID)
NewOEButton.click()
then:
waitFor { NewEnrollmentPage }
}
}
1)数据集1
private boolean useProductionUrl = false
protocol = System.getProperty("protocol") ?: "https"
baseDomain = System.getProperty("base.url") ?: "beta.com"
testPassword = System.getProperty("test.password") ?: "dontyouwish"
2)数据集2
private boolean useProductionUrl = true
protocol = System.getProperty("protocol") ?: "https"
baseDomain = System.getProperty("base.url") ?: "production.com"
testPassword = System.getProperty("test.password") ?: "dywyk"
答案 0 :(得分:0)
通常,要使测试依赖数据,请使用where
块,并可能与@Unroll
批注一起使用。
但是,您的案例根本不是数据驱动测试的最佳示例。
baseDomain
和protocol
应该在GebConfig.groovy
中进行设置,类似于您提供的摘录。
请参阅this section in the Book of Geb,因为这就是您所使用的。
简单示例(在GebConfig.groovy中):
environments {
production {
baseUrl = "https://production.com"
}
beta {
baseUrl = "https://beta.com"
}
}
如果采用这种方式,则您的单个测试无需关心环境,因为它已经内置在Geb中。 例如,导航到页面时,将自动设置其基本URL。 您没有在示例中提供那部分代码(页面的定义方式),所以我不能直接为您提供帮助。
现在,就您的情况而言,就“密码”而言,您可以从环境变量或系统属性中读取到您设置为使用geb.env
或{{1 }}系统属性。
请注意,出于实际原因,我只是在考虑这一点,而不考虑密码的保密性。
您将在使用它的页面类中选择该变量。
页面类中的示例代码:
geb.build.baseUrl
要执行此操作,您需要在将系统属性设置为正确值的情况下开始测试。
例如如果直接从命令行启动,则将添加参数static content = {
//...
passwordInput = { $('input[type="password"]') }
//...
}
void enterPassword() {
passwordInput.value(System.getProperty('test.password'))
}
。
如果从Gradle任务运行,则需要向该任务添加适当的-Dgeb.env=beta -Dtest.password=dontyouwish
键和值。
如果是从IDE运行,请参阅您的IDE文档,以了解运行程序时如何设置Java系统属性。