如何在 Ruby 方法中处理 运行 Cucumber 特征?

How to handle running Cucumber features within Ruby method?

我在测试开始前使用 AfterConfiguration 挂钩 运行 一些设置配置,但是我面临的问题是当我 运行 我的方法之一他们将 运行 一组在 Ruby 方法中使用反引号的特征文件,这反过来似乎重新初始化黄瓜并重复该过程,所以我陷入了循环

AfterConfiguration  do
   EnvironmentSetup::TestUsers.create_test_users
end

module EnvironmentSetup
  class TestUsers
    def self.create_test_users
    # other logic here
    `cucumber "#{path_to_feature}"` # Use backticks to run cucumber scripts in a subshell
    end 
  end
end

因此,当执行此操作时,它会回到开头,运行又是我的所有其他逻辑

有没有办法只运行这一次,或者忽略第二次循环的AfterConfiguration?声明一个全局变量?

我也试过了

AfterConfiguration  do
 if defined? $a == nil
   EnvironmentSetup::RedisUsers.check_redis_users
   EnvironmentSetup::TestUsers.create_test_users
 end

结束

module EnvironmentSetup
  class TestUsers
    def self.create_test_users
    # other logic here
    $a = true
    `cucumber "#{path_to_feature}"` # Use backticks to run cucumber scripts in a subshell
    end 
  end
end

但我猜测是不是在重新初始化时没有携带变量集?

尝试设置环境变量:

AfterConfiguration do
  return if ENV['CUCUMBER_CONFIGURED'] == 'yes'

  EnvironmentSetup::TestUsers.create_test_users
  ENV['CUCUMBER_CONFIGURED'] = 'yes'
end

和运行黄瓜是这样的:

CUCUMBER_CONFIGURED='no'; cucumber ...