由于开发,我们的团队通过SpecFlow,Selenium和Appium为Web和桌面环境提供了产品的自动化覆盖。为了简化自动化框架,我们决定针对Web和桌面重用现有的Specflow方案。但是,某些现有的Specflow场景无法自动化,因为应用程序驱动程序可能存在很多问题。因此,有必要在台式机的测试运行期间使用某种Specflow @ignore标记跳过某些测试方案,但这些方案仍应能够在网络环境中运行。我试图用谷歌搜索,但是没有发现与我的问题有关的东西。也许你们中的一些人已经解决了这个问题,可以给我一些解决的建议吗?
有一种利用自定义标签来忽略测试的方法,但是您必须使用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.Contains("ignore")) { var unitTestRuntimeProvider = (IUnitTestRuntimeProvider) RediTestControl._scenarioContext.GetBindingInstance((typeof(IUnitTestRuntimeProvider))); unitTestRuntimeProvider.TestIgnore("ignored"); } else { //initiate appium driver or webDriver } }
如果在功能文件中的脚本中找到
@ignore
标签,它将忽略测试。您仍然可以在场景上使用其他标签。只有找到@ignore
,它才会忽略test。对于Web场景,您只需删除@ignore
Scenario: web scenario
Given some common step for web and mobile