由于开发,我们的团队通过SpecFlow、Selenium和Appium为web和桌面环境提供了产品的自动化覆盖。为了简化自动化框架,我们决定在web和桌面上重用现有的Specflow场景。然而,一些现有的Specflow场景不能被自动化,因为appium驱动程序可能存在许多问题。因此,在桌面的测试运行期间,有必要使用某种Specflow @ignore标记来跳过一些测试场景,但这些场景应该仍然能够在web环境下运行。我试着在谷歌上搜索,但没有找到与我的问题相关的任何内容。也许,你们中的一些人有这个问题的解决方案,可以给我一个解决它的建议?
发布于 2020-01-25 00:32:54
有一种方法可以利用自定义标记来忽略测试,但是您必须在运行时使用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
}
}如果在功能文件中的scenario上发现@ignore标签,这将忽略测试。您仍然可以在scenario上使用其他标记。只有在找到@ignore时,它才会忽略测试。对于web方案,您可以只删除@ignore
Scenario: web scenario
Given some common step for web and mobilehttps://stackoverflow.com/questions/59773614
复制相似问题