2017-03-21 37 views
1

现在我试图抓住当前场景中的信息(描述,文件路径,名称等)。我试图让在之前钩场景信息这样抓取前后钩子的场景信息?

Before do |scenario| 
    puts scenario.name 
    puts scenario.description 
    #etc. 
end 

但是之类的东西scenario.description是不可用。这是因为当在前后钩子中运行时,情况被称为Cucumber::RunningTestCase::Scenario,而不是核心AST模块的一部分,就像功能一样。我希望能够从Cucumber::Core::Ast::ScenarioCucumber::Core::Ast::OutlineTable::ExampleRow访问场景,其中可以使用当前场景描述等值。是否可以在钩子前后访问Cucumber::Core::Ast::Scenario而不是Cucumber::RunningTestCase::Scenario,或以其他方式获取场景名称,描述,文件路径等信息?这是使用最新版本的黄瓜和黄瓜核心宝石(2.4和1.5)。另外,我也不再能够访问关于当前步骤和步数的信息。

回答

1
Before do |scenario| 
    all_sources = scenario.outline? ? scenario.scenario_outline.all_source : scenario.all_source 
end 

从ALL_SOURCE变量,你将有机会获得由::几个对象助攻

方案概要:

  • 黄瓜::核心::阿斯特::功能

  • Cucumber :: Core :: Ast :: ScenarioOutline

  • Cucumb呃::核心::阿斯特::例子

  • 黄瓜::核心::阿斯特:: ExamplesTable ::行:

  • 黄瓜::核心::阿斯特:: ExpandedOutlineStep

场景:

  • 黄瓜::核心::阿斯特::功能

  • 黄瓜::核心::阿斯特::场景

  • 黄瓜::核心::阿斯特::步骤

从这些你应该能够获得有关文件路径,描述,评论,标签,挂钩数据,行号等。