在Rspec中从命令行传递哈希参数

时间:2018-01-12 05:43:39

标签: ruby selenium-webdriver rspec automated-tests capybara

需要一些东西,可以按照以下方式保持rspec DRY:

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_behaves_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

对于多个标签页,需要重复上述相同的代码。

我想通过'标签'控制台中的参数,如果可能的话如果可能或以任何其他方式减少此重复代码,请通知。

注意:我希望将这些测试套装保存在上面的不同部分,以便在需要时使用行号轻松选择需要的测试套件。

1 个答案:

答案 0 :(得分:4)

你可以使用env vars

env TAB=home rspec spec/features/users_spec.rb:12

然后,在你的代码中

tab = { tab: ENV['TAB'] }