在 运行 行为测试之前仅执行一次前提条件

Execute precondition only once before running behave tests

我只想 运行 precondition 在 运行 一堆测试(在场景大纲中定义)之前只进行一次。

假设我 feature file 是这样的:

Background:
    Given Fan is powered

#Test to check fan speed
@TEST_FAN-1 @SuperFan
Scenario Outline: Checking fan speed
    Given fan is not running
    When send speed command with <speed>
    Then fan is running with <speed>


    Examples:
        | speed |          
        | 5     |
        | 50    |
        | 100   |

我定义 Given Fan is powered 如下:

@given("Fan is powered")
def step_impl(context):
    assert conetxt.fan.is_powered

此前提条件在scenario outline 中定义的每个测试之前执行。 有没有办法运行只用一次?

一种可能性是在before_all 中添加上下文属性,以跟踪相关步骤之前是否已执行。这仍会在日志中显示该步骤,但后续尝试将不会执行任何操作。

def before_all(context):
    context.precondition_cache = set()

@given("fan is powered")
def step_impl(context):
    if "fan is powered" not in context.precondition_cache:
        # power up the fan
        context.precondition_cache.add("fan is powered")