Karate框架使用Scenario Outline执行API时如何动态修改Header的requestorId
Karate框架动态修改请求头参数解决方案
问题根因
- 你当前定义的
ID-HEADERS取值为JSON格式字符串,并非原生JS对象,无法直接修改嵌套的内部属性 res['ID-HEADERS.requestorId']属于错误写法,JS/Karate不会自动把字符串里的点号识别为嵌套属性访问规则,只会将整段字符串作为单层key处理
调整方案(优先推荐)
第一步:修改headers.js配置文件
将请求头定义为原生JS对象格式,不要把ID-HEADERS的内容转为字符串:
function() { return { "ID-HEADERS": { "requestorId": "1111", "authMethod": "basic" } } }
第二步:修正头处理函数的赋值逻辑
先访问ID-HEADERS对应的对象,再修改内部的requestorId参数:
function() { var fun = karate.read(headersFilePath + 'headers.js'); var res = fun(); res['ID-HEADERS'].requestorId = requestorId; return res; }
兼容方案(必须保留ID-HEADERS为字符串时使用)
如果业务要求ID-HEADERS的取值必须为JSON字符串格式,可通过序列化/反序列化的方式修改:
function() { var fun = karate.read(headersFilePath + 'headers.js'); var res = fun(); // 先将字符串转为可编辑的JS对象 var idHeader = JSON.parse(res['ID-HEADERS']); idHeader.requestorId = requestorId; // 修改完成后转回字符串存入原字段 res['ID-HEADERS'] = JSON.stringify(idHeader); return res; }
内容的提问来源于stack exchange,提问作者NAMBIKA THIRUMALAI
相关产品推荐
相关产品推荐

