代码之家  ›  专栏  ›  技术社区  ›  Grofit

在场景并行运行后检查specFlow中的场景完成状态

  •  0
  • Grofit  · 技术社区  · 6 年前

    我在其他地方看到过这个问题的各个方面,但没有可靠的答案,所以我理想地希望有几个 [AfterScenario] 绑定运行并根据完成状态执行一些逻辑,例如它是否通过/失败,以及它如何失败等。

    我知道有一个 ScenarioContext.Current.TestError 以及其他一些相关的类,但是我找不到文档来指示在并行运行测试时是否可以使用它,上面也是这样 ScenarioContext 可以在这个上下文中使用,还是有其他的方法?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Andreas Willich    6 年前

    不能在并行执行中使用scenarioContext.current,但可以通过上下文注入获取当前scenarioContext(请参见 https://specflow.org/documentation/Context-Injection/ )

    所以这是并行执行的:

    [Binding]
    public class ScenarioStatusBinding
    {
      private readonly ScenarioContext _scenarioContext;
    
      public ScenarioStatusBinding(ScenarioContext scenarioContext)
      {
        _scenarioContext = scenarioContext;
      }
    
      [AfterScenario]
      public void CheckStatusOfScenario()
      {
        Console.WriteLine(_scenarioContext.TestError);
        Console.WriteLine(_scenarioContext.ScenarioExecutionStatus);
      }
    }