Pytest Bdd:即使失败,如何继续执行 BDD 中的步骤

问题描述

我在 pytest-bdd 上实现了这样的场景

Scenario: Shopping Cart Verification
  Given I am out for shopping shopping and took a cart
  Given I added "2" "Tomatoes" to the cart
  Given I added "3" "Bread" to the cart
  Then there is "3" "Tomatoes" in the cart
  Then there is "3" "Bread" in the cart
  Then there are "5" items in the cart

在这里我们可以看到步骤(然后购物车中有“3”个“西红柿”)将失败,测试执行将在那里停止,其余步骤将不会执行。 那么即使在pytest bdd中一个或多个步骤失败了,有没有办法继续执行测试?

解决方法

我没有看到让单个场景保持运行的方法,但每个测试只有一个断言是一种很好的做法。在这种情况下,这会导致大量重复,但您可以使用 backgrounds 将其删除:

Feature: Shopping cart

  Background:
    Given I am out for shopping shopping and took a cart
    Given I added "2" "Tomatoes" to the cart
    Given I added "3" "Bread" to the cart

  Scenario: The tomatoes are in the cart
    Then there is "3" "Tomatoes" in the cart

  Scenario: The bread is in the cart
    Then there is "3" "Bread" in the cart

  Scenario: The items are in the cart
    Then there are "5" items in the cart

我同意这有点不自然,但这是我能想到的最好的方法。也许其他人有更好的主意。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...