0

我喜欢使用 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 文档和源代码,似乎没有一种简单的方法可以通过字符串检索场景。

4

2 回答 2

1

我唯一知道的是定义调用先前定义的步骤的新步骤:查看有关该主题的教程。也许这可能是解决您问题的好方法。

于 2013-07-16T16:02:27.780 回答
0

您可以使用world为了在您的场景之间存储数据。

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

您可以从可以访问的任何地方访问这些数据world

您可以将它与您的terrain.py文件混合,以便在步骤、场景、功能之间保存数据。

于 2013-07-21T22:02:44.200 回答