Karate POST请求JSON负载传递随机变量及外部request.json传值问题
Karate Feature文件随机值注入解决方案
一、同一Feature文件内生成并注入随机order值
Karate原生支持JavaScript语法生成随机值,直接在请求前定义变量后通过内嵌表达式注入即可:
- 先在Scenario块中定义随机order变量,可按需调整随机数范围:
# 生成1-100000之间的整数随机值 * def randomOrder = Math.floor(Math.random() * 100000) + 1 # 如果需要全局唯一值,可直接用时间戳 # * def randomOrder = java.lang.System.currentTimeMillis()
- 构造请求负载时通过
#(变量名)格式引用变量:
* def requestPayload = """ { "order": #(randomOrder), "其他必填字段": "对应值" } """ # 直接赋值给request发送POST请求即可 * request requestPayload * method post
常见踩坑提示:不要使用
${变量名}格式作为占位符,Karate的JSON内置变量替换仅支持#()语法。
二、将随机值注入独立存储的request.json负载
完全支持,操作步骤如下:
- 提前在外部
request.json文件中对应字段写好占位符:
{ "order": #(randomOrder), "productId": "P001", "count": 10, "address": "测试地址" }
- 在Feature文件中先定义随机值变量,再通过
read()函数读取外部JSON文件,Karate会自动完成变量替换:
* def randomOrder = Math.floor(Math.random() * 100000) + 1 # 读取外部文件时会自动替换所有#()占位符,文件路径按需调整即可 * def requestPayload = read('classpath:request.json') * request requestPayload * method post
内容的提问来源于stack exchange,提问作者Niks
相关产品推荐
相关产品推荐

