6

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

4

3 回答 3

4

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

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

于 2013-08-23T16:39:50.487 回答
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 等。

于 2017-02-08T08:58:20.527 回答
0

我使用 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
  }
}
于 2018-03-09T09:53:57.260 回答