要点: 当在-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;我希望在幕后完成这项工作。
答案 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()
挂钩。
注意: