2015-04-15 2 views
2

У меня есть два полнометражных файлы:Behave, несколько шагов, с таким же именем

delete.feature 
new_directory.feature 

И два шага файлы:

delete.py 
new_directory.py 

Каждый из художественных файлов начинается так:

Background: 
    Given 'Workspace has the following structure' 

Следуя за разными таблицами.

Когда я пишу в шаге файл декоратор:

@given('Workspace has the following structure') 

Как это узнать, какой файл особенность фон принадлежит? Когда я бегу, ведут себя по

new_directory.feature

Я вижу, что он работает на этот шаг из delete.feature. Есть ли способ сделать разницу между этими файлами, кроме как иметь все уникальные имена шагов?

ответ

2

Способ, которым я решил использовать общий шаг, - использовать единую реализацию для шага, который работает по-разному в зависимости от функции, использующей этот шаг. Адаптированный к тому, что вы описали, это будет что-то вроде:

@given('Workspace has the following structure') 
def step_impl(context): 
    feature = context.feature 

    name = os.path.splitext(os.path.basename(feature.filename))[0] 
    if name == "delete": 
     # do something 
     ... 
    elif name == "new_directory": 
     # do something else 
     ... 
    else: 
     raise Exception("can't determine how to run this step") 

Кода выше основан на проверку базового имени (минус расширение) файл, который содержит функцию. Вы также можете проверить фактическое имя функции, но я считаю, что имена файлов более стабильны, чем имена объектов, поэтому я предпочитаю проверять имена файлов.

+0

Спасибо, это то, что я искал! :) –