首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法使用自定义标记来忽略Specflow中的正确测试

有没有办法使用自定义标记来忽略Specflow中的正确测试
EN

Stack Overflow用户
提问于 2020-01-17 00:05:54
回答 1查看 607关注 0票数 0

由于开发,我们的团队通过SpecFlow、Selenium和Appium为web和桌面环境提供了产品的自动化覆盖。为了简化自动化框架,我们决定在web和桌面上重用现有的Specflow场景。然而,一些现有的Specflow场景不能被自动化,因为appium驱动程序可能存在许多问题。因此,在桌面的测试运行期间,有必要使用某种Specflow @ignore标记来跳过一些测试场景,但这些场景应该仍然能够在web环境下运行。我试着在谷歌上搜索,但没有找到与我的问题相关的任何内容。也许,你们中的一些人有这个问题的解决方案,可以给我一个解决它的建议?

EN

回答 1

Stack Overflow用户

发布于 2020-01-25 00:32:54

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

在特征文件中

代码语言:javascript
复制
  @ignore
  Scenario: mobile scenario
  Given some common step for web and mobile

在绑定类BindingClass

代码语言:javascript
复制
public static ScenarioContext _scenarioContext;

绑定类构造函数

代码语言:javascript
复制
 public BindingClass(ScenarioContext scenarioContext)
        {
            _scenarioContext = scenarioContext;
        }

下面是绑定

代码语言:javascript
复制
 [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
            }
  }

如果在功能文件中的scenario上发现@ignore标签,这将忽略测试。您仍然可以在scenario上使用其他标记。只有在找到@ignore时,它才会忽略测试。对于web方案,您可以只删除@ignore

代码语言:javascript
复制
  Scenario: web scenario
  Given some common step for web and mobile
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59773614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档