Как правило, чтобы сделать тест зависимым от данных, используйте блок where
, возможно, вместе с аннотацией @Unroll
.
Однако ваш случай просто не лучший пример для теста, управляемого данными.
baseDomain
и protocol
лучше установить в GebConfig.groovy
, аналогично предоставленным вами фрагментам.Обратитесь к этому разделу в Книге Геба , поскольку это то, что вы используете.
Простой пример (в GebConfig.groovy):
environments {
production {
baseUrl = "https://production.com"
}
beta {
baseUrl = "https://beta.com"
}
}
Если сделаноТаким образом, ваши индивидуальные тесты не должны заботиться об окружающей среде, так как это уже встроено в Geb.Например, при переходе на страницы их базовый URL-адрес устанавливается автоматически.Вы не предоставили эту часть кода в своем примере (как определяются страницы), поэтому я не могу помочь вам с этим напрямую.
Теперь, в вашем случае, что касается "пароля"Вы могли бы прочитать это из переменной среды или системного свойства, которое вы установили близко к тому месту, где вы конфигурируете Geb с geb.env
или geb.build.baseUrl
системными свойствами.
Примечание. Я просто рассматриваю это по практическим соображениям, без каких-либо ограничений в отношении секретности.пароля.
Вы должны выбрать переменную в классе страницы, которая ее использует.
Пример кода в классе страницы:
static content = {
//...
passwordInput = { $('input[type="password"]') }
//...
}
void enterPassword() {
passwordInput.value(System.getProperty('test.password'))
}
Чтобы это работало, вам нужнозапустите тест с системными свойствами, настроенными на правильные значения.
Например, если запускать прямо из командной строки, вы добавите параметры -Dgeb.env=beta -Dtest.password=dontyouwish
.Если вы запускаете из задачи Gradle, вам нужно добавить соответствующие systemProperty
ключи и значения для этой задачи.При запуске из IDE обратитесь к документации IDE, чтобы узнать, как установить системные свойства Java при запуске программы.