目前我正在研究一个应该能够在本地和酱油实验室上运行的环境,但我有以下问题:
当使用Cucumber时,需要标记"@selenium"来将酱汁与并行测试集成。然而,这个标签也强制测试在酱料实验室上运行(我希望能够在酱料和本地之间切换)。是否有一种方法可以使用环境变量或标记来改变这种行为?
OS: OSX Yosemite测试栈:Ruby, Capybara, Cucumber, Rake.
注意:没有Selenium标签,我可以同时运行酱油实验室和本地的单个测试运行或顺序的所有测试运行。我不熟悉红宝石/水豚/黄瓜,所以任何一般的技巧都非常感谢)
处理单个特征和黄瓜特征的方法:
if (ENV["RUN_ON_SAUCE"] == "true")
puts('TRUE: ENV["RUN_ON_SAUCE"] = ' + ENV["RUN_ON_SAUCE"])
Capybara.default_driver = :sauce
Capybara.javascript_driver = :sauce
else
puts('FALSE: ENV["RUN_ON_SAUCE"] = ' + ENV["RUN_ON_SAUCE"])
Capybara.default_driver = :selenium
Capybara.javascript_driver = :selenium
end
下面的代码为我工作。我用黄瓜和capybara,我的功能被标记为@selenium和其他几个标签(@core),我用它们来过滤。
在sauce labs上执行套件命令-
RUN_ON_SAUCE = trueSC_EXECUTABLE =路径//酱/连接/可执行START_TUNNEL=true ENVIRONMENT=staging parallel_cucumber features - 0"-t @core" -n 8
本地执行套件的命令-
parallel_cucumber features - 0"-t @core" -n 8
if ENV['HEADLESS']
require 'capybara/poltergeist'
Capybara.default_driver = :poltergeist
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, {:debug => false, :default_wait_time => 60, :timeout => 120, :js_errors => false, :window_size => [1024, 768]})
end
Capybara.javascript_driver = :poltergeist
elsif ENV['RUN_ON_SAUCE']
require 'sauce'
require 'sauce/capybara'
require 'sauce/cucumber'
Capybara.default_driver = :sauce
Capybara.javascript_driver = :sauce
Sauce.config do |c|
if ENV['START_TUNNEL']
c[:start_tunnel] = ENV['START_TUNNEL']
c[:sauce_connect_4_executable] = ENV['SC_EXECUTABLE']
c[:connect_options] = {tunnel_domains: "'*.example.com'", max_logsize: "10485760"}
end
c[:browsers] = [
["Windows 8", "Internet Explorer", "10"],
["Windows 10", "Internet Explorer", "11"],
["Windows XP", "Internet Explorer", "8"]
]
c[:'max-duration'] = 300
end
else
Capybara.default_driver = :selenium
Capybara.default_max_wait_time = 120
Capybara.page.driver.browser.manage.window.maximize
end