如何通过dotnet test --filter组合ID与浏览器条件筛选指定测试场景
解决方案:同时按标签和浏览器筛选SpecFlow测试
问题重现
你的场景代码如下:
@ID-1 @Browser:Edge @Browser:Chrome Given Scenario: 01.01 Given I have open website in Browser When I open form Then the element are visible @ID-2 @Browser:Edge @Browser:Chrome Given Scenario: 01.02 Given I have open website in Browser When I open form Then the element are visible
你原本想仅运行@ID-1标签的Scenario:01.01且限定Browser:Chrome环境,但使用命令dotnet test --filter ID-1 | Browser:Chrome时,实际运行了3个测试:01.01(Edge)、01.01(Chrome)、01.02(Chrome)——因为|是逻辑或,会匹配所有带ID-1的测试,加上所有带Browser:Chrome的测试。
正确的筛选命令
要实现同时满足两个条件(既带@ID-1标签,又是Browser:Chrome环境),需要使用逻辑与(&)连接筛选条件:
dotnet test --filter "TestCategory=ID-1&TestCategory=Browser:Chrome"
补充:精准匹配场景名称
如果需要进一步确保只运行01.01场景,可以结合名称筛选:
dotnet test --filter "TestCategory=ID-1&TestCategory=Browser:Chrome&Name~01.01"
这里Name~表示模糊匹配场景名称,若需精确匹配可替换为Name=。
原理说明
SpecFlow会将Gherkin中的@标签映射为.NET测试的TestCategory属性,dotnet test的--filter参数支持用&表示逻辑与、|表示逻辑或。使用&时,只有同时符合所有筛选条件的测试才会被执行,这样就能精准定位到01.01的Chrome环境测试。
内容的提问来源于stack exchange,提问作者maksim korshikov
相关产品推荐
相关产品推荐

