简体   繁体   中英

Passing values to Specflow Scenario methods from feature file

I have a custom tag defined in my Hook.cs file like

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

What I want to do is I want to change its method definition like

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

And I want to use this in feature file as something like

@AfterUpgradeTag(bool val = false)

I have searched alot for this. I want to know is this possible using Specflow or if there are any alternatives

I am not sure if you can pass parameters like that in feature file but you can utilize tags to achieve your goal

In feature file do this

 @upgrade @false
  Scenario: testing upgrade

In binding class

 public static ScenarioContext _scenarioContext;

and binding class constructor

 public BindingClass(ScenarioContext scenarioContext)
        {

            _scenarioContext = scenarioContext;

        }

and your BeforeScenario method is defined like this in the class 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..");
            }
        }

when you want to pass true in feature file just do

 @upgrade @true
  Scenario: testing upgrade

您可以按照 specflow 中的文档来实现这一点。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM