You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 08:06:03