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

在OpenTest中测试API POST请求时如何使用FormData及报错解决

解决OpenTest中POST请求使用FormData的报错问题

错误原因

你遇到的ReferenceError: "FormData" is not defined,是因为OpenTest默认使用的Nashorn JavaScript引擎是Java端的运行环境,它不支持浏览器专属的FormData API——这个API仅存在于浏览器JS环境中,服务器端/桌面端JS引擎没有实现它。

正确实现方式

方式1:用OpenTest内置的multipartFormData配置(推荐)

OpenTest的http.post action已经内置了对multipart/form-data格式的支持,不需要手写脚本创建表单对象,直接通过配置参数即可:

- description: 发送multipart/form-data POST请求
  action: http.post
  args:
    url: "https://你的API地址"
    multipartFormData:
      # 普通文本字段
      - name: "name"
        value: "test"
      # 如果需要上传文件,添加以下配置
      # - name: "file"
      #   filePath: "./测试文件路径/sample.txt"

方式2:动态构建表单(适合复杂场景)

如果需要动态生成表单数据(比如根据测试状态拼接字段),可以直接调用Java的MultipartEntityBuilder类(OpenTest基于Java,Nashorn引擎允许直接调用Java API):

  1. 在script action里构建表单实体:
// 导入需要的Java类
var MultipartEntityBuilder = Java.type("org.apache.http.entity.mime.MultipartEntityBuilder");
var ContentType = Java.type("org.apache.http.entity.ContentType");

// 初始化表单构建器
var formBuilder = MultipartEntityBuilder.create();
// 添加文本字段
formBuilder.addTextBody("name", "test", ContentType.TEXT_PLAIN);
// 如需添加文件
// formBuilder.addBinaryBody("file", new java.io.File("./测试文件路径/sample.txt"));

// 将构建好的实体存入测试状态,供后续请求使用
testState.set("multipartFormEntity", formBuilder.build());
  1. 在http.post action里引用这个实体:
- action: http.post
  args:
    url: "https://你的API地址"
    entity: $multipartFormEntity

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 03:33:30