如何处理Lettuce中场景之间的依赖关系?

时间:2013-05-02 18:06:29

标签: python testing bdd 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文档和源代码,似乎没有一种简单的方法可以通过它的字符串检索场景。

2 个答案:

答案 0 :(得分:1)

我唯一知道的是定义调用先前定义的步骤的新步骤:查看tutorial about that topic。也许这可以解决您的问题。

答案 1 :(得分:0)

您可以使用world在各种方案之间存储数据。

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

您可以从有权访问world

的任何地方访问此数据

您可以将其与terrain.py文件混合使用,以便在步骤,方案和功能之间保存数据。