【问题标题】:Specflow test results accessible from AfterScenario hook?可从 AfterScenario 挂钩访问 Specflow 测试结果?
【发布时间】:2018-08-08 21:17:05
【问题描述】:

有什么方法可以从 Specflow AfterScenario 挂钩访问测试结果(成功/失败,甚至可能是断言等)?我没有看到任何东西,但它似乎会包含在内。

【问题讨论】:

    标签: c# nunit specflow


    【解决方案1】:

    您可以通过查看 ScenarioContext.Current 来掌握测试结果。有一个 TestError 属性可以帮助你。

    有关详细信息,请参阅此 wiki (https://github.com/techtalk/SpecFlow/wiki/ScenarioContext)。

    【讨论】:

      【解决方案2】:

      是的,有,但你需要使用反射。在您的 [AfterScenario] 块中使用以下内容:

      PropertyInfo pInfo = typeof(ScenarioContext).GetProperty("TestStatus", BindingFlags.Instance | BindingFlags.NonPublic);
      MethodInfo getter = pInfo.GetGetMethod(nonPublic: true);
      object TestResult = getter.Invoke(ScenarioContext.Current, null);
      

      TestResult 会OK,MissingStepDefinition 等

      【讨论】:

        【解决方案3】:

        我使用 ScenarioContext 来执行此操作。这是一些示例代码,希望是有意义的(没有得到实际的断言值 - 据我所知不可能),但确实意味着如果测试失败,我可以让浏览器保持打开状态:

        [AfterScenario]
        public void AfterScenario() {
        if (ScenarioContext.Current.TestError == null) {
           // Test failed (use ScenarioContext.Current.TestError to print out error to logs if required)
           _driver.Quit
          }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-11
          • 2021-08-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多