我的测试项目中包含以下内容:
[AfterScenario]
[Scope(Tag = "Tag1"), Scope(Tag = "Tag2")]
public static void AfterScenarioMethod()
{
}
基于SpecFlow文档,仅当ScenarioContext.Current.ScenarioInfo.Tags包含两个必需的标签时,我才应该期望输入AfterFeatureMethod()。但是,即使只有Tag1可用,该方法也会执行。
我在这里想念东西吗?
答案 0 :(得分:0)
第一个AfterScenario不是静态的。
如果您在一个属性上定义多个属性,则它们将与AND结合在一起。 如果您有多个属性,则将它们与OR组合在一起。
摘自文档:https://specflow.org/documentation/Scoped-Bindings/
如果为同一个方法或类定义了多个[Scope]属性,则这些属性将与OR组合在一起,即至少需要匹配[Scope]属性之一。
要检查多个标签,您必须执行以下操作:
[Binding]
public class Bindings
{
private ScenarioContext _scenarioContext;
public Bindings(ScenarioContext scenarioContext)
{
_scenarioContext = scenarioContext;
}
[AfterScenario]
public static void AfterScenarioMethod()
{
if (_scenarioContext.ScenarioInfo.Tags.Contains("Tag1") &&
_scenarioContext.ScenarioInfo.Tags.Contains("Tag2") {
//do you stuff
}
}
}
代码是从内存中写入的,我没有尝试过。