Ruby 在Rspec中从命令行传递散列参数
需要一些东西,可以按以下方式保持rspec干燥:Ruby 在Rspec中从命令行传递散列参数,ruby,selenium-webdriver,rspec,automated-tests,capybara,Ruby,Selenium Webdriver,Rspec,Automated Tests,Capybara,需要一些东西,可以按以下方式保持rspec干燥: rspec spec/features/users_spec.rb:12 -fd tab: 'Home' 使用 ruby 1.9.3 rspec 2.6.4 Rails 3.1.6 gem 'capybara', '2.1.0' gem 'selenium-webdriver', '2.43.0' 实际上,我有多个“it_Behavior_like”超过50个具有相同重复代码的多个组合,如下所示 下面是一个基本的例子来解释我的问题: desc
rspec spec/features/users_spec.rb:12 -fd tab: 'Home'
使用
ruby 1.9.3
rspec 2.6.4
Rails 3.1.6
gem 'capybara', '2.1.0'
gem 'selenium-webdriver', '2.43.0'
实际上,我有多个“it_Behavior_like”超过50个具有相同重复代码的多个组合,如下所示
下面是一个基本的例子来解释我的问题:
describe 'Login' do
primary_admin = { acc_type: 'admin', user_type: 'primary' }
secondary_admin = { acc_type: 'admin', user_type: 'secondary' }
primary_admin = { acc_type: 'non-admin', user_type: 'primary' }
secondary_admin = { acc_type: 'non-admin', user_type: 'secondary' }
tab = { tab: 'Home' }
it_behaves_like 'Authorized User', primary_admin.merge(tab)
it_behaves_like 'Authorized User', secondary_admin.merge(tab)
it_behaves_like 'Authorized User', primary_admin.merge(tab)
it_behaves_like 'Authorized User', secondary_admin.merge(tab)
tab = { tab: 'My Profile' }
it_behaves_like 'Authorized User', primary_admin.merge(tab)
it_behaves_like 'Authorized User', secondary_admin.merge(tab)
it_behaves_like 'Authorized User', primary_admin.merge(tab)
it_behaves_like 'Authorized User', secondary_admin.merge(tab)
tab = { tab: 'Security' }
it_behaves_like 'Authorized User', primary_admin.merge(tab)
it_behaves_like 'Authorized User', secondary_admin.merge(tab)
it_behaves_like 'Authorized User', primary_admin.merge(tab)
it_behaves_like 'Authorized User', secondary_admin.merge(tab)
end
对于多个选项卡,将需要重复上述相同的代码
如果可能的话,我想从控制台传递'tab'参数。如果有可能,请提供建议,或以任何其他方式减少此重复代码
注意:我希望将这些测试套件保存在上述不同的部分,以便在需要时使用行号轻松选择所需测试套件。您可以使用env vars
env TAB=home rspec spec/features/users_spec.rb:12
然后,在代码中
tab = { tab: ENV['TAB'] }
您可以使用环境变量
env TAB=home rspec spec/features/users_spec.rb:12
然后,在代码中
tab = { tab: ENV['TAB'] }
我测试了
FOO=bar irb
,但它没有启动。我需要使用命令。如果你不介意的话,我会编辑你的问题。我想这是因为我使用的是Fish shell(它在Bash中工作),但无论如何,我认为使用env
rspec spec/features/users\u spec.rb:12 TAB=home
不起作用?@Sergioturentsev如果我传递了3个env变量,它就起作用了,但无法使用行号执行特定案例。电子邮件=t@example.com'FLOW=two_stage TAB=home rspec spec/features/users_spec.rb:18-fdI-testedFOO=bar-irb
,它不会启动。我需要使用命令。如果你不介意的话,我会编辑你的问题。我想这是因为我使用的是Fish shell(它在Bash中工作),但无论如何,我认为使用env
rspec spec/features/users\u spec.rb:12 TAB=home
不起作用?@Sergioturentsev如果我传递了3个env变量,它就起作用了,但无法使用行号执行特定案例。电子邮件=t@example.com'FLOW=two_stage TAB=home rspec spec/features/users_spec.rb:18-fd如果您通过env传递TAB,则不再需要这三个部分是的,但该选项卡的特定情况不能通过作为第一个目标的行号来执行。这就是我在注释中提到的原因。如果您通过env传递tab,您不再需要这三个部分是的,但是该tab的具体情况不能通过作为第一个目标的行号来执行。这就是我在便条中提到它的原因。