可从AfterScenario挂钩访问规范流测试结果

本文关键字:范流 测试结果 访问 AfterScenario 可从 | 更新日期: 2023-09-27 18:28:44

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

可从AfterScenario挂钩访问规范流测试结果

您可以通过查看ScenarioContext.Current来获取测试结果。有一个TestError属性可能会对您有所帮助。

查看此wiki(https://github.com/techtalk/SpecFlow/wiki/ScenarioContext)了解更多信息。

是的,有,但您需要使用反射。在【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等。

我使用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
  }
}