我在不同的网站上有几乎完全相同的webapp版本。
我想做的是在命令行指定网站......
cucumber --server server1 --tags @tests
...
@servers = {'server1' => 'https://www.tests.com', 'server2' => 'https://www.foobar.com'}
...
Background:
Given I am on {#server1}
Scenario: Happy plan
When I go here
And I see this
Then I get that
在多个类似网站上运行相同脚本的最佳方法是什么?可以从命令行运行吗?
答案 0 :(得分:2)
您最好的选择是使用an environment variable作为您的服务器名称:
cucumber SERVER=server1 --tags @tests
您可以创建一般步骤:
Given I am on the configured test server
然后,在您的步骤定义中,您可以像在任何普通的Ruby代码中那样查看它并将其设置为Capybara的基本URL:
Given /^I am on the configured test server$/ do
server_name = ENV['SERVER']
url = @servers[server_name] or raise "Unknown test server: #{server_name}"
Capybara.app_host = url
end
请注意,使用远程服务器时,您需要使用支持它的Capybara驱动程序,例如Selenium:默认的RackTest驱动程序不支持。您可能还想将run_server
设置为false
。见https://github.com/jnicklas/capybara#calling-remote-servers
答案 1 :(得分:1)
创建一些配置并在执行脚本之前读取它。
例如,将解析配置的代码放到 features / support / env.rb 。