Behave BDD后台如何跳过步骤?

How to skip steps in background of Behave BDD?

我正在使用 Python & Behave BDD 实现自动化。

据我所知,每个场景之前的背景 运行s,但我只需要带有 @need_background 标签的场景之前 运行 的背景。我怎样才能做到这一点?

我已经尝试获取当前场景标签和if tag != need_background then skip background's steps。但据我所知,behave 没有跳过后台步骤的方法。

既然场景不共享相同的背景,为什么不将特殊场景移动到其他功能文件或不使用背景。

但如果你还想使用背景部分,我建议:

首先,给你的 environment.py

添加一个钩子
def before_scenario(context, scenario):
if 'need_background ' in scenario.tags:
    context.if_background = True
else:
    context.if_background = False    

然后将您在后台的所有步骤合并为一个步骤

@given('all background steps are done')
def step_impl(context):
if context.if_background:
    context.context.execute_steps('''
        steps in background
    ''')
else:
    pass

现在,如果您的特征文件是:

Feature: Background with condition
Background:
Given all background steps are done

Scenario: run without background
# steps of the scenario you don't need background

@need_background 
Scenario: run with background
# steps of the scenario you need background

我觉得可能符合你的要求