如何通过Runner.runFeature执行feature文件中的指定场景或标签?
运行Feature文件中指定标签的场景
你之前的链式调用写法不对——runFeature是直接触发用例执行的方法,不会返回可继续配置的对象,所以后面加.tags("@smoke")根本不会生效。要只运行带特定标签的场景,试试下面几种方法:
方法1:通过传入的Map配置标签
如果你的Runner支持通过参数Map传递过滤规则,直接在var里加标签配置就行:
Map<String, Object> var = new HashMap<>(); // 添加标签过滤,只跑带@smoke的场景 var.put("tags", "@smoke"); Map<String, Object> testing = Runner.runFeature("classpath:jtr/setup.feature", var, true);
方法2:用构建器模式配置(如果Runner支持)
有些测试框架的Runner会提供构建器来逐步配置参数,先把所有配置(包括标签)设置好再执行,比如:
// 示例:假设存在RunnerBuilder类 RunnerBuilder runnerBuilder = new RunnerBuilder() .setFeaturePath("classpath:jtr/setup.feature") .setTags("@smoke") .setVariables(new HashMap<>()) .setDryRun(true); // 对应你代码里的第三个参数true Map<String, Object> testing = runnerBuilder.execute();
方法3:检查Runner的重载方法
看看Runner类有没有带标签参数的重载版runFeature,比如:
// 假设存在这种重载方法 Map<String, Object> testing = Runner.runFeature("classpath:jtr/setup.feature", var, true, "@smoke");
另外要确认你的Feature文件里,目标场景确实加了@smoke标签,比如:
Feature: 初始化设置
@smoke
Scenario: 初始化API A
Given 系统已启动
When 调用初始化API A
Then 返回状态码200Scenario: 初始化API B
Given 系统已启动
When 调用初始化API B
Then 返回状态码200
内容的提问来源于stack exchange,提问作者Maddy
相关产品推荐
相关产品推荐

