【问题标题】:Cucumber Rake Task resetting environment variablesCucumber Rake 任务重置环境变量
【发布时间】:2017-02-07 18:17:59
【问题描述】:

我有一个设置环境变量的 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']} 不是每次都设置,而是取第一个值。

如何让它在每次调用run_single 方法时获取ENV['BS_TYPE']

【问题讨论】:

    标签: ruby cucumber capybara rake rakefile


    【解决方案1】:

    你可以试试这个方法

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

    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 浏览器数组中获取所有这些字符串

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-27
      • 2015-03-22
      • 2015-06-17
      • 1970-01-01
      • 1970-01-01
      • 2019-11-28
      • 2021-05-28
      相关资源
      最近更新 更多