Запуск тестов 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 вероятно, должна быть ваша тестовая среда.

Посмотреть Здесь