Karate中被调用Feature文件无法访问karate-config.js参数问题
问题:Feature文件调用时baseUrl参数传递异常
Feature文件1调用Feature文件2中的场景时,文件1能正常打印baseUrl参数,但文件2无法打印该参数。
文件2代码
@ignore Feature: Scenario related api-calls Background: * print baseUrl * url baseUrl @create_scenario Scenario: create_scenario
文件1代码
Feature: Handling a Scenario Background: * print baseUrl * def create_scenario_data = callonce create_scenario_function default_create_scenario_data * def scenarioDetail = create_scenario_data.response
补充代码(EDIT 1)
@ignore Feature: Direct function definitions for easy access Scenario: * def create_scenario_function = function(data) { return karate.call("classpath:karate/utils/api_caller/scenario.feature@create_scenario", {requestBody: data, baseUrl: baseUrl})}
问题原因与解决方案
原因
在create_scenario_function中传递baseUrl时,子Feature的Background执行阶段,传入的参数未被正确识别,导致无法直接引用打印。另外补充代码里的east access是笔误,应为easy access。
解决方案
- 方案一:在子Feature中使用
karate.get()获取参数,修改文件2的Background:Background: * print karate.get('baseUrl') * url karate.get('baseUrl') - 方案二:在调用函数中先校验
baseUrl是否存在,确保参数有效后再传递:* def create_scenario_function = function(data) { if (!baseUrl) karate.fail("baseUrl未正确初始化"); return karate.call("classpath:karate/utils/api_caller/scenario.feature@create_scenario", {requestBody: data, baseUrl: baseUrl}) } - 方案三:在子Feature的场景开头显式接收参数(注意
Background优先执行,此方案需配合方案一使用):@create_scenario Scenario: create_scenario * def baseUrl = __arg.baseUrl
内容的提问来源于stack exchange,提问作者Nagulan S
相关产品推荐
相关产品推荐

