如何在Ruby方法中处理运行Cucumber功能?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Ruby方法中处理运行Cucumber功能?相关的知识,希望对你有一定的参考价值。

我在测试开始之前使用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 ...

以上是关于如何在Ruby方法中处理运行Cucumber功能?的主要内容,如果未能解决你的问题,请参考以下文章

在 RubyMine 中运行 Cucumber 测试场景时出错

使用ruby + watir-webdriver + cucumber和parallel_tests gem在多个浏览器中运行测试

AWS Device Farm 上的 ruby​​-appium-cucumber 问题

如何使用 Java 在运行时获取当前 Cucumber 功能文件名

ERB预处理ruby代码

如何在 Cucumber 测试套件中订购功能文件?