2014-09-03 8 views
6

Ich benutze Cucumber und Capybara für meine automatisierten Front-End-Tests.Running Cucumber Tests in verschiedenen Umgebungen

Ich habe zwei Umgebungen, in denen ich meine Tests ausführen möchte. Einer ist eine Staging-Umgebung und der andere ist die Produktionsumgebung.

Derzeit habe ich meine Tests geschrieben, um direkt auf Staging zuzugreifen.

visit('https://staging.somewhere.com') 

Ich mag würde die Tests in der Produktion (https://production.somewhere.com) wieder verwenden.

Wäre es möglich, die URL in einer Variablen in meinem Schritt Definitionen speichern

visit(domain) 

und definiert Domäne einer Umgebungsvariable über die Befehlszeile aufgerufen Form? Wie

$> bundle exec cucumber features DOMAIN=staging 

wenn ich will, um die Tests zu meiner Staging-Umgebung zeigen, oder

$> bundle exec cucumber features DOMAIN=production 

wenn ich will es in der Produktion laufen?

Wie gehe ich vor? Ich bin ziemlich neu in Ruby und ich habe die Foren nach einfachen Informationen durchsucht, konnte aber keine finden. Lassen Sie mich wissen, ob ich mehr Informationen zur Verfügung stellen kann. Danke für Ihre Hilfe!

Antwort

6

in der Konfigurationsdatei des Projekts, erstellen Sie eine Datei config.yml

--- 
staging: 
    :url: https://staging.somewhere.com 

production: 
    :url: https://production.somewhere.com 

Dann zusätzlichen Doppelpunkt in der yml Datei die Raute-Taste ermöglicht als Symbol aufgerufen werden.

In Ihrer Unterstützung/env.rb Datei, fügen Sie die folgenden

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] 

Dies ist auf die Staging-Umgebung wird standardmäßig, wenn Sie die TEST_ENV außer Kraft setzen. Dann aus dem Schritt oder Haken, können Sie anrufen:

visit($BASE_URL) 

oder Sie benötigen:/

visit "#{$BASE_URL}" 

Dies ermöglicht es Ihnen verwenden

bundle exec cucumber features TEST_ENV=production 
+0

Thank you! Sehr detaillierte Antwort. Ich habe es ausprobiert und es hat funktioniert. – RaymundS

1

ich cucumber nicht viel nutzen, aber Sie sollten in der Lage

bundle exec cucumber features DOMAIN=staging 

dann in Ihren Tests ENV['DOMAIN'] || YOUR_DEFAULT_DOMAIN zu tun, verwenden Sie diese Variable zu verwenden. YOUR_DEFAULT_DOMAIN sollte wahrscheinlich Ihre Testumgebung sein.

See Here

Verwandte Themen