【问题标题】:Passing values to Specflow Scenario methods from feature file从特征文件将值传递给 Specflow Scenario 方法
【发布时间】:2020-05-09 14:32:01
【问题描述】:

我在我的 Hook.cs 文件中定义了一个自定义标签,例如

 [BeforeScenario("AfterUpgradeTag")]
 public void BeforeScenarioAfterUpgrade()
 {
  // Code execution here
 }

我想做的是我想改变它的方法定义,比如

 [BeforeScenario("AfterUpgradeTag")]
 public void BeforeScenarioAfterUpgrade(bool flag)
 {
  if(flag)
  // Code execution here
  else
  //Do a clean up 
 }

我想在功能文件中使用它

@AfterUpgradeTag(bool val = false)

我已经搜索了很多。我想知道这是否可以使用 Specflow 或者是否有任何替代方法

【问题讨论】:

  • 标签通常用在特征文件中,SpecFlow 不支持这种用法。标志会被设置为false 吗?也许如果我们更多地了解您想要完成的工作,我们可以想出一些答案。

标签: c# bdd specflow


【解决方案1】:

我不确定你是否可以在功能文件中传递类似的参数,但你可以利用标签来实现你的目标

在功能文件中这样做

 @upgrade @false
  Scenario: testing upgrade

在绑定类中

 public static ScenarioContext _scenarioContext;

和绑定类构造函数

 public BindingClass(ScenarioContext scenarioContext)
        {

            _scenarioContext = scenarioContext;

        }

并且您的 BeforeScenario 方法在 BindingClass 类中是这样定义的

[BeforeScenario("upgrade")]
        public void BeforeScenarioUpgradeFalseorTrue()
        {
            if (BindingClass._scenarioContext.ScenarioInfo.Tags.Contains("false"))
            {
                log.Info("upgrade is false..");
            }

            if (BindingClass._scenarioContext.ScenarioInfo.Tags.Contains("true"))
            {
                log.Info("upgrade is true..");
            }
        }

当您想在功能文件中传递true 时,只需这样做

 @upgrade @true
  Scenario: testing upgrade

【讨论】:

    【解决方案2】:

    您可以按照 specflow 中的 documentation 来实现此目的。

    【讨论】:

      猜你喜欢
      • 2020-11-03
      • 2021-08-13
      • 1970-01-01
      • 2015-06-07
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多