摘要:当在-w模式下生成测试报告或测试运行转储时,我希望支持作为后台步骤运行的步骤的stdout输出。我可以控制通过环境变量产生的输出,但我无法检测何时设置它,这取决于步骤是否在后台。对我来说,更好的是能够告诉behavior不要在后台以程序方式执行步骤时捕获/输出stdout。
详细信息:
Feature: Foo
Background:
Given foo <setup_mode> was run successfully
Scenario: ...
Given foo <test_mode> was run successfully
步骤"foo"在stdout上产生了很多输出,当它是测试后台的一部分时,我想关闭它。最好是在Background上使用@quiet标记,我可以在执行步骤时将环境设置为不健谈,但Behavior中不支持Background标记。
在这里,我无法通过上下文或标签检测到我所在的位置:
def before_step(context, tag):
上下文_如果我在后台或场景中,dir不会提供给我。
=>这方面有什么最佳实践吗?
我目前的方法是通过专用的Given步骤(如"And api output is[on|off]")显式切换输出,但由于后台和测试步骤总是一样的,我希望在幕后完成。
哦,重新检查(伟大的)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>
实际上,成语"使用标签进行设置/拆卸"(对于您想要做的事情)是个好主意。为此,请使用before_tag()
/after_tag()
挂钩。
注:
- 背景不支持标记。请参阅Gherkin语法
- 背景步骤与场景步骤合并(已准备好场景)