Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Api Postman中使用多部分/表单数据命中方法2次上传文件的预请求脚本_Api_File Upload_Postman_Postman Pre Request Script - Fatal编程技术网

Api Postman中使用多部分/表单数据命中方法2次上传文件的预请求脚本

Api Postman中使用多部分/表单数据命中方法2次上传文件的预请求脚本,api,file-upload,postman,postman-pre-request-script,Api,File Upload,Postman,Postman Pre Request Script,我正在与API项目合作,并与Postman一起编写自动化测试用例,以检查API状态。这里我有一个上传方法,用户必须将文件上传到服务器,并需要检查服务器是否返回适当的响应 Upload方法使用多部分/表单数据接受请求,来自我要传递的邮递员,如下屏幕所示: 我相信为了编写测试用例,我需要编写一个预请求脚本 pm.sendRequest({ url: pm.environment.get("baseURL") + '/document/upload', method: 'POST',

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

Upload方法使用多部分/表单数据接受请求,来自我要传递的邮递员,如下屏幕所示:

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

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);
}); 

然而,这个方法被击中了两次,你有没有想过要使它正确并且只击中一次呢?

我已经仔细阅读了文档,找出了问题所在。在使用Runner运行collection时,我遇到了一个问题,在找到了处理文件上传的方法之后,我终于找到了Newman,这对于此类场景来说似乎很容易。然而,在使用Runner运行时如何上传文件还不清楚

根据上述意见:

由于安全原因,Postman runner不支持文件上载 直接地查找Github线程


我看了一下文件,发现了问题所在。在使用Runner运行collection时,我遇到了一个问题,在找到了处理文件上传的方法之后,我终于找到了Newman,这对于此类场景来说似乎很容易。然而,在使用Runner运行时如何上传文件还不清楚

根据上述意见:

由于安全原因,Postman runner不支持文件上载 直接地查找Github线程


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

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

它肯定会命中两次,因为您已经发送了请求,并且您也在测试脚本中编写了此脚本以发送另一个请求。在请求执行阶段,首先执行请求前脚本,然后执行请求本身,最后执行测试脚本。因此,只要您点击“发送”,那么这两个请求都将执行,然后执行完成。当您已经在主请求中发送api数据时,为什么要使用pm.sendRequest?是的,我已经查看了文档,发现了问题所在。在使用Runner运行collection时,我遇到了一个问题,在找到了处理文件上传的方法之后,我终于找到了newman,这对于此类场景来说似乎很容易。然而,在使用Runner运行时如何上传文件还不清楚@我知道这个问题。由于安全原因,现在已经这样做了,但您可以参考以下问题:我已经解释了为什么会出现这种行为,我们正在积极跟踪在应用程序中存储文件路径的问题。纽曼是目前最好的解决方案。@SivcanSingh,好的,谢谢你提供的信息@SivcanSingh,我可以知道Postman用于测试脚本的框架是什么吗?我看到.not.eql或.not.equal不起作用。它肯定会命中两次,因为您已经发送了请求,并且您也在测试脚本中编写了此脚本以发送另一个请求。在请求执行阶段,首先执行请求前脚本,然后执行请求本身,最后执行测试脚本。因此,只要您点击“发送”,那么这两个请求都将执行,然后执行完成。当您已经在主请求中发送api数据时,为什么要使用pm.sendRequest?是的,我已经查看了文档,发现了问题所在。在使用Runner运行collection时,我遇到了一个问题,在找到了处理文件上传的方法之后,我终于找到了newman,这对于此类场景来说似乎很容易。然而,在使用Runner运行时如何上传文件还不清楚@我知道这个问题。这是由于
出于安全原因,现在已经这样做了,但您可以参考以下问题:我已经解释了为什么会出现这种行为,我们正在积极跟踪在应用程序中存储文件路径的问题。纽曼是目前最好的解决方案。@SivcanSingh,好的,谢谢你提供的信息@SivcanSingh,我可以知道Postman用于测试脚本的框架是什么吗?我看到.not.eql或.not.equal不起作用。