黄瓜耙任务重置环境变量

时间:2016-09-29 12:12:52

标签: ruby cucumber capybara rake rakefile

我有一个rake任务设置环境变量

 task circle_ci_parallel_tests: :environment do
    ENV['PREPARE_TEST_DATA'] = 'true'
    Rake::Task[:service_test_data_setup].execute
      browser_group.compact.uniq.each do |browser_name|
        next unless ENV['CIRCLE_NODE_INDEX'].to_i == group_index
        ENV['BS_KEY_NAME'] = browser_name
        ENV['TEST_ENV_NUMBER'] = group_index.to_s
        ENV['BS_TYPE'] = browser_name
        run_single
      end
    end

然后我用常规方法包装了一个rake任务

  def run_single
    Cucumber::Rake::Task.new(:run_features) do |task|
      output = 'tmp/failed_scenarios.txt'
      task.cucumber_opts = "features -t @leo --tags ~@no_#{ENV['BS_TYPE']} --tags ~@no_#{ENV['BS_TYPE']} -f rerun --out #{output}"
    end
    Rake::Task[:run_features].execute
  end

当我在命令行上运行Rake :: Task [circle_ci_parallel_tests]时 每次都没有设置ENV['BS_TYPE']},而是取出第一个值。

每次调用ENV['BS_TYPE']方法时,如何让它选择run_single

1 个答案:

答案 0 :(得分:0)

你可以试试这种方式

您需要将字符串连接到环境变量。

task circle_ci_parallel_tests: :environment do
    ENV['PREPARE_TEST_DATA'] = 'true'
    ENV['BS_TYPE'] = ''
    ENV['BS_KEY_NAME'] = ''
    Rake::Task[:service_test_data_setup].execute
      browser_group.compact.uniq.each do |browser_name|
        next unless ENV['CIRCLE_NODE_INDEX'].to_i == group_index
        ENV['BS_KEY_NAME'] += ", " + browser_name.to_s
        ENV['TEST_ENV_NUMBER'] = group_index.to_s
        ENV['BS_TYPE'] += ", " + browser_name.to_s
        run_single
      end
    end

ENV['BS_TYPE'] and ENV['BS_KEY_NAME']设置为browser1, browser2, browser3, ...browser_group.compact.uniq浏览器数组中获取所有这些字符串