在场景 运行 之后并行检查 specflow 中的场景完成状态
Check scenario completion status in specflow in after scenario run in parallel
我在其他地方看到过这个问题的各个方面,但没有可靠的答案,所以我理想情况下想要有几个 [AfterScenario]
绑定 运行 并根据完成状态做一些逻辑,即做到了 pass/fail,它是如何失败的等等
我知道有一个 ScenarioContext.Current.TestError
和其他一些相关的 类,但我找不到指示在并行测试 运行 时是否可以使用它的文档,所以是以上 ScenarioContext
可以在这种情况下使用还是有其他方法可以做到这一点?
您不能在并行执行中使用ScenarioContext.Current,但您可以通过上下文注入获取当前的ScenarioContext(参见https://specflow.org/documentation/Context-Injection/)
所以这可以并行执行:
[Binding]
public class ScenarioStatusBinding
{
private readonly ScenarioContext _scenarioContext;
public ScenarioStatusBinding(ScenarioContext scenarioContext)
{
_scenarioContext = scenarioContext;
}
[AfterScenario]
public void CheckStatusOfScenario()
{
Console.WriteLine(_scenarioContext.TestError);
Console.WriteLine(_scenarioContext.ScenarioExecutionStatus);
}
}
我在其他地方看到过这个问题的各个方面,但没有可靠的答案,所以我理想情况下想要有几个 [AfterScenario]
绑定 运行 并根据完成状态做一些逻辑,即做到了 pass/fail,它是如何失败的等等
我知道有一个 ScenarioContext.Current.TestError
和其他一些相关的 类,但我找不到指示在并行测试 运行 时是否可以使用它的文档,所以是以上 ScenarioContext
可以在这种情况下使用还是有其他方法可以做到这一点?
您不能在并行执行中使用ScenarioContext.Current,但您可以通过上下文注入获取当前的ScenarioContext(参见https://specflow.org/documentation/Context-Injection/)
所以这可以并行执行:
[Binding]
public class ScenarioStatusBinding
{
private readonly ScenarioContext _scenarioContext;
public ScenarioStatusBinding(ScenarioContext scenarioContext)
{
_scenarioContext = scenarioContext;
}
[AfterScenario]
public void CheckStatusOfScenario()
{
Console.WriteLine(_scenarioContext.TestError);
Console.WriteLine(_scenarioContext.ScenarioExecutionStatus);
}
}