在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):
- 在
scriptaction里构建表单实体:
// 导入需要的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());
- 在
http.postaction里引用这个实体:
- action: http.post args: url: "https://你的API地址" entity: $multipartFormEntity
内容的提问来源于stack exchange,提问作者Aman Shah
相关产品推荐
相关产品推荐

