有什么方法可以使用自定义标签忽略Specflow中的适当测试

由于开发,我们的团队通过SpecFlow,Selenium和Appium为Web和桌面环境提供了产品的自动化覆盖。为了简化自动化框架,我们决定针对Web和桌面重用现有的Specflow方案。但是,某些现有的Specflow方案无法实现自动化,因为应用程序驱动程序可能存在很多问题。因此,有必要在台式机的测试运行期间使用某种Specflow @ignore标记跳过某些测试方案,但是这些方案仍应能够在网络环境中运行。我试图用谷歌搜索,但是没有发现与我的问题有关的东西。 也许你们中的一些人已经解决了这个问题,可以给我一些解决的建议吗?

yichaohao 回答:有什么方法可以使用自定义标签忽略Specflow中的适当测试

有一种方法可以利用自定义标签忽略测试,但是您将必须使用specFlow内部接口IUnitTestRuntimeProvider并在绑定中编写逻辑以在运行时忽略测试。

在功能文件中

  @ignore
  Scenario: mobile scenario
  Given some common step for web and mobile

在绑定类BindingClass

public static ScenarioContext _scenarioContext;

绑定类构造器

 public BindingClass(ScenarioContext scenarioContext)
        {
            _scenarioContext = scenarioContext;
        }

这是绑定

 [Given(@"some common step for web and mobile")]

  public void someTest(){
      if (BindingClass.scenarioContext.ScenarioInfo.Tags.ToString().Contains("ignore"))
            {
                var unitTestRuntimeProvider = (IUnitTestRuntimeProvider)
                BindingClass._scenarioContext.GetBindingInstance((typeof(IUnitTestRuntimeProvider)));
                unitTestRuntimeProvider.TestIgnore("ignored");
            }
        else {

               //initiate appium driver or webDriver
            }
  }

如果它在功能文件中的脚本上找到@ignore标签,它将忽略测试。您仍然可以在场景上使用其他标签。仅当找到@ignore时,它才会忽略测试。对于网络方案,您只需删除@ignore

  Scenario: web scenario
  Given some common step for web and mobile
本文链接:https://www.f2er.com/2757378.html

大家都在问