【问题标题】:How do I handle dependencies between scenarios in Lettuce?如何处理生菜中场景之间的依赖关系?
【发布时间】:2013-05-02 18:06:28
【问题描述】:

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

【问题讨论】:

    标签: python testing bdd lettuce


    【解决方案1】:

    我唯一知道的是定义新步骤,这些步骤调用之前定义的步骤:查看tutorial about that topic。也许这对您的问题来说是一个很好的解决方法。

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • 感谢您的提及。我知道这种能力。我在问如何在定义和实现中实现场景之间的依赖关系。我认为@Torsten 下面的建议更接近这一点。
      猜你喜欢
      • 2021-03-12
      • 2021-02-16
      • 2021-07-05
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      • 2015-05-11
      • 1970-01-01
      相关资源
      最近更新 更多