我喜欢使用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文档和源代码,似乎没有一种简单的方法可以通过它的字符串检索场景。
答案 0 :(得分:1)
我唯一知道的是定义调用先前定义的步骤的新步骤:查看tutorial about that topic。也许这可以解决您的问题。
答案 1 :(得分:0)
您可以使用world
在各种方案之间存储数据。
@before.each_feature
def feature_setup(feature):
...
world.feature_data = dict()
...
您可以从有权访问world
您可以将其与terrain.py
文件混合使用,以便在步骤,方案和功能之间保存数据。