1

我正在使用 API 项目并使用 Postman 编写测试用例以自动化检查 API 状态。在这里,我有一种上传方法,用户必须将文件上传到服务器并需要检查服务器是否返回适当的响应。

上传方法接受来自 Postman 的 multipart/form-data 请求,我传递如下屏幕:

在此处输入图像描述

我相信为了写一个测试用例,我需要写一个预请求脚本。

pm.sendRequest({
    url: pm.environment.get("baseURL") + '/document/upload',
    method: 'POST',
    header: [{
        "key": "Authorization",
        "value": pm.environment.get("authorization"),
        "type": "text",
    }],
    body: {
        mode: 'formdata',
        formdata: [{
            "key": "file",
            "type": "binary",
            "src": "C:\Users\Desktop\api.pdf"
        }]
    }
}, function(err, res) {
    console.log(res);
}); 

但是,该方法被击中两次,有什么想法让它正确并且只击中一次吗?

4

2 回答 2

4

我浏览了文档并弄清楚了问题所在。我在使用 Runner 运行收集时遇到了问题,在找到了一种处理文件上传的方法后,我终于来到了 Newman,这对于这种情况来说似乎很容易。但是,目前还不清楚如何在使用 Runner 运行时上传文件!

根据上面的评论:

由于安全原因 Postman runner 不支持直接上传文件。在这里找到 Github 线程

于 2019-01-03T11:39:55.330 回答
0

您可以在收藏中的此之前添加请求,如果您需要在下一个中进行上传,则可以上传。尽管良好的实践表明,请求应该是原子的,带有预请求,这将是非常困难的。如果您坚持这样做,您可以使用文件的 base64 字符串来实现它并使用 formdata 发送请求。另一个选项在管道中与 Newman 一起运行。您所要做的就是导出集合、环境和测试文件,并确保导出的 json 中没有绝对路径。( Newman 应该从包含集合和 env json 文件的目录中执行)

于 2021-02-25T16:21:32.457 回答