2017-01-13 7 views
0

Я использую Python & Управлять BDD для автоматизации.Как пропустить шаги в фоновом режиме Behave BDD?

Как я знаю, фон запускается перед каждым сценарием, но мне нужен фон для запуска до сценариев только с тегом @need_background. Как я могу это достичь?

Я попытался получить текущий тег сценария и if tag != need_background then skip background's steps. Но у меня нет способа пропустить фоновые шаги, насколько мне известно.

ответ

1

Поскольку сценарии не разделяют один и тот же фон, почему бы не переместить специальный файл в другие файлы функций или просто не использовать фон.

Но если вы все же хотите использовать фоновый раздел, я бы рекомендовал:

Во-первых, добавить крюк к вашему 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 

Я думаю, он может отвечать вашим требованиям