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

如何在Karate框架Feature文件请求体中以键值对传递JSON文件

解决Karate Feature中请求体JSON文件传递缺失的问题

我来帮你搞定这个问题——你遇到的“请求的文件缺失”报错,核心原因是你在请求体里直接写了文件名字符串,而没有把从其他Feature传递过来的JSON变量正确注入到请求体中。下面是具体的排查和修复步骤:

1. 确认跨Feature变量传递的正确性

首先要确保你从另一个Feature传递过来的是JSON内容本身,而不是文件名或者未正确初始化的变量。比如在负责读取JSON的Feature里,你应该是这样读取并返回的:

# 示例:read-json.feature
Feature: 读取并返回JSON文件内容
  Scenario:
    # 读取JSON文件到变量
    def test1Json = read('test1.json')
    # 返回该变量供其他Feature调用
    return test1Json

然后在当前Feature里通过call获取这个变量:

def test1Json = call('read-json.feature')

如果是用共享变量(比如karate.set)传递,也要确保变量名和值正确:

# 在另一个Feature里设置共享变量
karate.set('test1Json', test1Json)
# 当前Feature里获取
def test1Json = karate.get('test1Json')

2. 修正请求体的写法

你之前的请求体里'test1.json'是字符串字面量,API自然会认为这是文件名而非JSON内容。需要用Karate的#(变量名)语法把JSON变量注入进去:

Given url "你的API接口地址"
# 确保test1Json是已经从其他Feature拿到的JSON变量
And request { test: #(test1Json), test2: 'description text' }
When method post
Then status 200

3. 快速验证变量内容

在发送请求前可以加一行打印,确认变量是否正确加载了JSON内容:

And print "传递过来的JSON内容:", test1Json

如果打印出来的是null或者文件名字符串,那说明变量传递环节出了问题,要回到跨Feature调用的步骤排查。

内容的提问来源于stack exchange,提问作者avinash

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:31:34