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
我觉得可能符合你的要求
我正在使用 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
我觉得可能符合你的要求