【问题标题】:Specflow Lifecycle of feature context特征上下文的 Specflow 生命周期
【发布时间】:2017-11-08 11:48:19
【问题描述】:

我有以下代码sn-p

public class BaseSteps : Steps
{
    [BeforeFeature]
    public static BeforeFeatureStep()
    {
        var otherStep = new OtherStep();
        otherStep.ExecuteStep();
    }
} 

public class OtherStep : Steps
{
    [Given("I save (.*) against (.*)]
    public void ExecuteStep(string val, string key) 
    {
        this.FeatureContext.Add(key, val);
    }
}

功能文件 1

Scenario: S1
Given I save 10 against A

Scenario: S2
Given I save 20 against B

功能文件 2

Scenario: S3 
Given I save 30 against C

现在,测试顺序是由测试运行者决定的,而且是随意的。 因此,如果场景的执行顺序是 S1 -> S3 -> S2,我是否应该能够从场景 S2 访问保存在场景 S1 中的特征上下文中的键值对(因为两者都属于同一个特征) ?

我同意场景应该是独立的,但我的要求需要我对每个功能进行一些设置,如果已经完成,请跳过它。使用上述方法我无法做到这一点,因为从场景 S1 保存在特征上下文中的键值对在场景 S2 中不可用

【问题讨论】:

    标签: c# specflow xunit


    【解决方案1】:

    我同意场景应该是独立的,但我的要求需要我对每个功能进行一些设置,如果已经完成,请跳过它。

    这应该由您的Given 处理,因此您无需从场景的角度担心这一点。所有三种方案通用的任何设置都应该放在Background

    Background:
        Given I save 10 against A
    
    Scenario: S1
        When...
        Then...
    
    Scenario: S2
        Given I save 20 against B
        When...
        Then...
    
    Scenario: S3
        Given I save 20 against B
        And I save 30 against C
        When...
        Then...
    

    “Given I save X against Y”的步骤定义应包含检查条件所需的代码,然后不再应用它。

    【讨论】:

    • 我同意背景用于常见设置。但是在我的要求中,出于逻辑分类的目的,我的场景必须强制放置在不同的特征文件中。遇到这种情况该如何处理?
    • @DevD:每个场景都需要自己的正确设置。您必须为每个场景输入所有必要的Given
    猜你喜欢
    • 1970-01-01
    • 2015-04-22
    • 2013-07-17
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    相关资源
    最近更新 更多