Karate框架是否支持按标签或名称执行被调用feature文件指定场景
Karate调用其他feature指定场景的实现方案
Karate原生支持通过标签或场景名调用其他feature文件内的指定场景,无需额外替代方案,具体用法如下:
核心调用语法
Karate 0.9.5及以上版本支持在call指令的文件路径后追加标识,匹配目标场景:
- 按标签匹配:
call read('目标文件路径@标签名') - 按场景名称匹配:
call read('目标文件路径#场景完整名称')
实际使用示例
针对你提到的GIT校验复用场景,可按以下步骤实现:
- 先给公共校验文件
git-check.feature内的对应场景打标签,比如:
@checkBranchExists Scenario: 校验GIT分支存在性 * def branchName = typeof branchName == 'undefined' ? 'main' : branchName * def expectExists = typeof expectExists == 'undefined' ? true : expectExists # 此处省略GIT分支校验的具体执行逻辑 * def checkPass = <校验结果布尔值>
- 在业务测试文件中调用指定场景,同时传入自定义参数:
# 执行业务操作:创建dev/feature-001分支 Given path '/git/branch/create' And request { name: 'dev/feature-001' } When method post Then status 200 # 调用公共校验场景校验分支是否成功创建 * def checkResult = call read('classpath:git-check.feature@checkBranchExists') { branchName: 'dev/feature-001', expectExists: true } * match checkResult.checkPass == true
注意事项
- 调用指定场景时,目标feature文件的
Background块会正常执行,公共初始化逻辑可正常复用 - 仅匹配到的目标场景会执行,同文件内的其他场景不会被触发,符合用例复用的效率要求
内容的提问来源于stack exchange,提问作者Basava Kumar M
相关产品推荐
相关产品推荐

