Как обрабатывать зависимости между сценариями в Lettuce?

Мне нравится использовать Lettuce для определения тестовых случаев. Во многих случаях сценарии Lettuce легко написать таким образом, чтобы их можно было запускать либо атомарно, либо как часть других сценариев в функции. Однако я считаю, что Lettuce также является полезным инструментом для анализа и реализации более сложных интеграционных тестов. В этих случаях имеет смысл разбить тесты на сценарии, но определить зависимость от предыдущего сценария. Таким образом, я могу запустить сценарий, не определяя явно, какие другие сценарии необходимо запустить. Это также проясняет зависимость в определении сценария. Это может выглядеть примерно так:

Scenario: Really long scenario
    Given some condition
    Given another condition
    Then something
    ...

Scenario: A dependent scenario
    Given the scenario "Really long scenario" has been run
    Given new condition
    Then some stuff
    ...

Тогда я мог бы сделать что-то вроде:

@step('Given the scenario "([^"]*)" has been run')
def check_scenario(step, sentence):
    scenario = get_scenario(sentence) # This what I don't know how to do
    if not scenario.ran:
        scenario.run()

Как вы справляетесь с этой ситуацией? Есть ли какие-то ошибки, которые мне не хватает при таком подходе? Беглый просмотр документации по API и исходного кода показал, что не существует простого способа получить сценарий по его строке.


person Geoffrey Hing    schedule 02.05.2013    source источник


Ответы (2)


Единственное, о чем я знаю, это определение новых шагов, которые вызывают ранее определенные шаги: step-definitions" rel="nofollow">руководство по этой теме. Возможно, это может быть хорошим решением вашей проблемы.

person Torsten Engelbrecht    schedule 16.07.2013

Вы можете использовать world для хранения данных между вашими сценариями.

@before.each_feature
def feature_setup(feature):
    ...
    world.feature_data = dict()
    ...

Вы можете получить доступ к этим данным из любого места, где у вас есть доступ к world

Вы можете смешать его с вашим файлом terrain.py, чтобы сохранить данные между шагами, сценариями, функциями.

person PukeCloud    schedule 21.07.2013
comment
Спасибо за это упоминание. Я знаю об этой способности. Я спрашивал, как реализовать зависимости между сценариями как в определении, так и в реализации. Я думаю, что предложение @Torsten ниже приближается к этому. - person Geoffrey Hing; 22.07.2013