Postman 可以将文件作为路径中的变量吗?

Can Postman take a file as a variable from a path?

我有一个 postman 集合,其中包含一组三个 API 调用,我想将它们链接在一起并使用 runner 函数提供数据文件。假设他们是:

/prepareUpload

/upload

/confirmUpload

下一步需要每个输出。我很高兴从响应中提取内容并将它们放入为下一次调用做好准备的变量中,但我似乎陷入困境的一点是 /upload 需要一个 file 类型的参数 file,但是Postman好像不让我设置成变量:

我试过导出集合,手动编辑 json 以将其强制为一个变量,然后 运行 那个,所以像 :

<snip>
    {
       "key": "file",
       "contentType": "{{contentType}}",
       "type": "file",
       "src": ["{{fullpath}}"]
    }
  ],
  "options": {
    "formdata": {}
}

其中 {{contentType}}{{fullpath}} 来自我的数据文件,但似乎从未实际上传过。

有人知道这是否可行吗?

无法使用 Postman 读取本地文件(github 上的跟踪器中至少有两个问题:798, 7210

解决方法是设置一个提供文件的服务器,这样您就可以通过向该服务器发出请求来获取数据。

好的,所以找到了答案,简短的版本是 - Postman 做不到,但 Newman 可以:

https://github.com/postmanlabs/newman#file-uploads

设置和运行它需要付出更多的努力,但它确实提供了一个自动化整个过程的解决方案。

问题:

在邮递员中,如果我们检查 UI,我们会注意到无法将文件路径定义为变量。

当我们需要 运行 来自不同系统的文件时,这看起来像是一个限制

解法:

解决方案是破解 collection.json 文件。打开 json 并编辑 formdata src 并将其替换为变量,假设 file_path 所以:{{file_path}}

现在在 Postman 中:

在预先请求中,您可以在下面的代码中设置路径

pm.environment.set("file_path","C:/Users/guest/Desktop/1.png")

也可以直接保存为环境变量,或者在使用newman时通过cmd使用--env-var传递。

注:

将来自外部工作目录的访问文件设置为 true(从右上角设置)

对于 Postman(从版本 9.1.5 开始),在 Mac os,你可以通过在你的目录中命名一个文件来欺骗 postman与您的变量名称共享目录(即 {{uploadMe}})。然后你从文件选择器中选择ose 这个文件(命名为变量)然后 Voilà。

在我的例子中,我上传的文件位于同一个共享目录中,不要忘记在您的 postman 设置中设置共享目录。