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

如何使用Karate框架实现Postman的Send and Download文件下载接口自动化?

使用Karate框架测试POST下载API(保留返回文件名)

完全可行,Karate框架可以轻松处理这类文件下载场景,你可以通过捕获响应头提取预填充的文件名,再将响应内容写入指定路径的文件中。以下是具体实现步骤和代码示例:

核心实现步骤

  • 发送POST请求,获取完整的响应(包括响应头和二进制内容)
  • 从Content-Disposition响应头中提取API返回的文件名
  • 将响应的二进制内容写入指定路径,结合提取到的文件名完成保存

代码示例

Feature: 测试POST类型Excel下载API

Scenario: 发送请求并保存带原始文件名的Excel文件
    Given url "你的API接口地址"
    # 如果API需要请求体,取消下面注释并替换为实际参数;不需要则直接删除此行
    # And request { "key1": "value1", "key2": "value2" }
    When method post
    Then status 200

    # 从响应头提取文件名
    * def contentDisposition = responseHeaders['Content-Disposition'][0]
    # 适配多数API的Content-Disposition格式,若你的格式不同可调整正则
    * def fileName = contentDisposition.match(/filename="?(.*?)"?;/)[1]

    # 指定下载路径,确保目录已存在,不存在可提前创建
    * def basePath = "本地保存目录/" # 比如 "test/downloads/"
    * def fullPath = basePath + fileName
    * karate.createDir(basePath) # 自动创建目录(如果需要)

    # 写入文件
    * karate.write(responseBody, fullPath)
    * print "文件已成功保存至: " + fullPath

    # 可选:验证文件是否存在
    * assert karate.exists(fullPath)

关键说明

  • responseHeaders是Karate自动捕获的响应头集合,Content-Disposition头通常包含文件名信息,格式一般为attachment; filename="xxx.xlsx"或attachment; filename=xxx.xlsx,示例中的正则已适配这两种情况。
  • responseBody在文件下载场景下会自动以二进制形式存储响应内容,直接传给karate.write()即可完成写入。
  • 如果需要验证文件内容的正确性,可以结合第三方库(如Apache POI)读取Excel内容做断言,但Karate本身提供的文件存在性验证已能满足基础测试需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 12:34:52