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