Ruby + Cucumber:如何在代码中执行黄瓜?

时间:2012-12-13 16:55:57

标签: ruby dynamic cucumber

我想在Ruby代码中执行Cucumber功能。

通常,与gem一起安装的cucumber二进制文件在命令行上执行,并指定一个或多个功能。

但是,我想定义创建动态功能执行流程的逻辑。换句话说,程序可以确定应该执行哪些功能。

是否可以使用Ruby代码中的指定功能文件来实例化Cucumber而不是命令行?

2 个答案:

答案 0 :(得分:11)

我从邮件列表和一些API阅读中发现了如何。

features="path/to/first.feature path/to/second.feature"
runtime = Cucumber::Runtime.new 
runtime.load_programming_language('rb') 
Cucumber::Cli::Main.new([features]).execute!(runtime)

如果您希望执行gem features/目录中的所有功能,请将空数组传递给Main.new

答案 1 :(得分:3)

要转换此示例命令,请指定功能和选项:

cucumber features/first.feature features/second.feature -d -f Cucumber::Formatter::Custom

进入Ruby代码,归结为将Cucumber传递给args数组:

require 'cucumber'

# Method 1 - hardcoded features
args = %w(features/first.feature features/second.feature -d -f Cucumber::Formatter::Custom)

# Method 2 - dynamic features
features = 'features/first.feature features/second.feature'
args = features.split.concat %w(-d -f Cucumber::Formatter::Custom)

# Run cucumber
begin
  Cucumber::Cli::Main.new(args).execute!
rescue SystemExit
  puts "Cucumber calls @kernel.exit(), killing your script unless you rescue"
end

使用Ruby 2.0.0p598和Cucumber 1.3.17进行测试