2014-09-03 107 views
6

我正在使用Cucumber和Capybara进行自动化前端测试。在不同环境下进行黄瓜测试

我有两个我想运行测试的环境。一个是分段环境,另一个是生产环境。

目前,我有我的测试写入访问直接登台。

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相当陌生,我一直在搜索论坛寻找简单的信息,但找不到任何信息。让我知道我是否可以提供更多信息。谢谢你的帮助!

回答

6

在项目的配置文件,创建一个config.yml文件中的YML文件

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

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

然后额外的冒号允许散列键被称为一个符号。

在您的支持/ 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 
+0

谢谢!非常详细的回应。我试了一下,它的工作。 – RaymundS 2014-09-04 15:40:19

1

我不使用cucumber很多,但你应该能够做到

bundle exec cucumber features DOMAIN=staging 

然后在测试中使用ENV['DOMAIN'] || YOUR_DEFAULT_DOMAIN利用这个变量。 YOUR_DEFAULT_DOMAIN应该可能是您的测试环境。

See Here