【问题标题】:Run in an entire Specflow scenario with a Specflow line?使用 Specflow 线在整个 Specflow 场景中运行?
【发布时间】:2017-04-04 15:55:12
【问题描述】:

我有一个 Specflow 场景,它通过我们应用程序中的向导运行并创建一个表单,就像用户一样。我们称之为场景 A。

现在,我需要创建另一个场景来获取创建的表单并填写/提交它。我们称之为场景 B。

为了能够运行场景 B,我需要先运行场景 A。有没有办法在场景 B 中使用 Background 关键字运行整个场景 A?还是有其他方法可以做到这一点?

【问题讨论】:

    标签: c# automation cucumber specflow


    【解决方案1】:

    您可以从其他步骤中调用步骤,因此您可以创建一个调用所有步骤的步骤,包括后台的步骤:

    Backgroud:
       Given I have done this
    
    Scenario:
       Given another thing
       And this other thing
    

    那么你可以像这样创建一个步骤

    [Binding]
    public class MySteps: Steps //<- this is important if you want to reuse steps
    {
    
        Given("I have done eveything")]
        public void GiveIHaveDoneEverything()
        {
            Given("I have done this");
            Given("another thing");
            Given("this other thing");
        }
    }
    

    【讨论】:

    • 请不要这样做。在步骤中调用步骤对于基于 Cucumber 的框架来说是不好的做法。相反,制作辅助函数:iHaveDoneThis(); anotherThing(); thisOtherThing();
    • @KyleFairns 您能否详细说明您认为这种不良做法的原因?并不是说我反对辅助函数本身,但我不确定为什么它是不好的做法
    • 问题很难追踪,而且实际上使维护更加困难。相反,使用辅助方法。查看this discussion,它会解释更多。在实践中,通过执行这样的操作不会有任何错误,但是当涉及到一步中的一步中的一步中的一步(等等)失败时 - 你必须深入兔子洞找出原因正是它失败了。创建辅助函数可以使代码更易于维护。
    猜你喜欢
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多