【发布时间】:2018-08-08 21:17:05
【问题描述】:
有什么方法可以从 Specflow AfterScenario 挂钩访问测试结果(成功/失败,甚至可能是断言等)?我没有看到任何东西,但它似乎会包含在内。
【问题讨论】:
有什么方法可以从 Specflow 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 会OK,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
}
}
【讨论】: