可从AfterScenario钩子访问Specflow测试结果?

时间:2013-08-23 15:48:09

标签: c# nunit specflow

有没有办法从Specflow AfterScenario钩子访问测试结果(成功/失败,甚至断言等)?我没有看到任何东西,但它似乎包含在内。

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

是的,有,但你需要使用反射。在[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可以,MissingStepDefinition等。

答案 2 :(得分: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
  }
}