Python表现:如何检查当前步骤是否在“背景”上下文中

时间:2015-02-19 11:09:16

标签: python-behave

要点: 当在-w模式下生成测试报告或测试运行转储时,我想要压缩步骤的stdout输出,这些步骤作为后台步骤运行。 我可以控制通过环境变量生成的输出,但是我无法检测何时设置它,具体取决于步骤是否在背景中。 对我来说更好的是能够在编程后台步骤执行过程中告诉表现不捕获/输出标准输出。

详细说明:

Feature: Foo
    Background:
        Given foo <setup_mode> was run successfully

    Scenario: ...
        Given foo <test_mode> was run successfully
步骤&#39; foo&#39;在stdout上产生很多输出,我想在测试背景时关闭它。 最好是在背景上的@quiet标签,我可以将我的环境设置为在步骤执行时不繁琐,但在行为中不支持背景标记。

在这里,我无法通过上下文或标记检测到我:

def before_step(context, tag):
如果我在背景或场景中,

context._dir不向我提供。

=&GT;有关这方面的最佳做法吗?

我目前的方法是通过专用的给定步骤明确切换输出(例如&#34;并且api输出是[on | off]&#34;)但是因为它总是相同的背景和测试步骤I&#39;我希望在幕后完成这项工作。

2 个答案:

答案 0 :(得分:0)

哦,重新检查(伟大的)API有帮助; - )

简单的答案对我有用,很抱歉打扰:

def before_feature(context, feature, **args):  
    context.background_steps = getattr(
            feature.background, 'steps', 0) or [] 

def before_step(context, step):
    if step in context.background_steps:
        <switch off chattyness>
    else:
        <switch on chattyness>

答案 1 :(得分:0)

实际上,成语&#34; 使用标签进行设置/拆卸&#34;是个好主意(为了你想做的事)。为此,请使用before_tag() / after_tag()挂钩。

注意:

  • 背景不支持标记。请参阅Gherkin语法。
  • 后台步骤与Scenario步骤合并(前置于 情景)