我使用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很新,我一直在论坛上搜索直接的信息,但找不到任何信息。如果我能提供更多信息,请告诉我。谢谢你的帮助!
答案 0 :(得分:7)
在项目的配置文件中,创建一个config.yml文件
---
staging:
:url: https://staging.somewhere.com
production:
:url: https://production.somewhere.com
然后yml文件中的冒号允许将散列键作为符号调用。
在support / 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
答案 1 :(得分:1)
我没有多少使用cucumber
但你应该能够做到
bundle exec cucumber features DOMAIN=staging
然后在您的测试中使用ENV['DOMAIN'] || YOUR_DEFAULT_DOMAIN
来使用此变量。 YOUR_DEFAULT_DOMAIN
应该是您的测试环境。