Запуск тестов Cucumber в разных средах
Я использую огурец и капибару для моих автоматизированных тестов переднего плана.
у меня есть две среды, в которых я хотел бы запустить свои тесты. Одна из них является промежуточной средой, а другая-производственной средой.
В настоящее время у меня есть мои тесты, написанные для прямого доступа к постановке.
visit('https://staging.somewhere.com')
Я хотел бы повторно использовать тесты в производстве (https://production.somewhere.com).
можно ли сохранить URL-адрес в переменная в моих определениях шага
visit(domain)
и определить домен с помощью переменной среды, называемой формой командной строки? Как
$> bundle exec cucumber features DOMAIN=staging
если я хочу указать тесты на мою промежуточную среду или
$> bundle exec cucumber features DOMAIN=production
если я хочу, чтобы он работал в производстве?
как мне это настроить? Я довольно новичок в Ruby, и я искал на форумах прямую информацию, но не мог найти ее. Дайте мне знать, если я могу предоставить более информация. Спасибо за помощь!
2 ответов
в конфигурационном файле проекта создайте конфигурацию.файл YML
---
staging:
:url: https://staging.somewhere.com
production:
:url: https://production.somewhere.com
затем дополнительное двоеточие в файле yml позволяет вызвать хэш-ключ в качестве символа.
в вашей поддержке / env.RB файл, добавьте следующий
require 'yaml'
ENV['TEST_ENV'] ||= 'staging'
project_root = File.expand_path('../..', __FILE__)
$BASE_URL = YAML.load_file(project_root + "/config/config.yml")[ENV['TEST_ENV']][:url]
это будет по умолчанию для промежуточной среды, если вы не переопределите TEST_ENV. Затем, с вашего шага или крючка, вы можете позвонить:
visit($BASE_URL)
или вам может понадобиться :/
visit "#{$BASE_URL}"
Это позволит вам использовать
bundle exec cucumber features TEST_ENV=production
Я не использую cucumber
много, но вы должны быть в состоянии сделать
bundle exec cucumber features DOMAIN=staging
тогда в ваших тестах используйте ENV['DOMAIN'] || YOUR_DEFAULT_DOMAIN
использовать эту переменную. YOUR_DEFAULT_DOMAIN
вероятно, должна быть ваша тестовая среда.