如何配置Postman文件路径指向Azure仓库并解决Newman报错
解决Azure Pipeline中Newman运行Postman集合时的文件找不到问题
问题根源
Postman集合中直接使用了Azure Pipeline的$(System.DefaultWorkingDirectory)变量,但Newman CLI无法解析这个Pipeline专属变量,会将其当作路径字符串的一部分,导致无法定位到实际文件。
解决方案
方案1:使用Postman环境变量传递路径
- 修改Postman集合中的文件路径:
将集合里的src值替换为Postman环境变量,示例:"formdata": [ { "key": "gamePresetFormFile", "type": "file", "src": "{{SYSTEM_DEFAULT_WORKING_DIR}}/test/AxiomAdministratorCore.DataGeneration.Tests/DataGeneration.Tests/GameInstall/11016_50300_HTML5Desktop-FeatureSlot-BurningDesire.zip" }, { "key": "gameContentFormFile", "type": "file", "src": "{{SYSTEM_DEFAULT_WORKING_DIR}}/test/AxiomAdministratorCore.DataGeneration.Tests/DataGeneration.Tests/GameInstall/BurningDesire.zip" } ] - 在Azure Pipeline的Newman命令中传入环境变量值:
添加--env-var参数,将Pipeline变量的值传递给Postman环境变量:"C:\Users\Build\AppData\Roaming\npm\newman" run $(Release.PrimaryArtifactSourceAlias)\test\CoreDataGeneration.Tests\DataGeneration.Tests\PostMan\GameInstalls.postman_collection.json -e $(Release.PrimaryArtifactSourceAlias)\test\Core.DataGeneration.Tests\DataGeneration.Tests\PostMan\Axiom-Test.postman_environment.json --env-var "SYSTEM_DEFAULT_WORKING_DIR=$(System.DefaultWorkingDirectory)" -r cli,junitfull --reporter-junitfull-export $(Release.PrimaryArtifactSourceAlias)\report.xml
方案2:在Pipeline中预替换集合文件里的变量
使用PowerShell命令先替换集合中的$(System.DefaultWorkingDirectory)为实际路径,再运行Newman:
- 添加PowerShell步骤:
$collectionPath = "$(Release.PrimaryArtifactSourceAlias)\test\CoreDataGeneration.Tests\DataGeneration.Tests\PostMan\GameInstalls.postman_collection.json" (Get-Content $collectionPath) -replace '\$\(System.DefaultWorkingDirectory\)', "$(System.DefaultWorkingDirectory)" | Set-Content $collectionPath - 执行原来的Newman命令。
方案3:使用相对路径(推荐,如果文件与集合路径关系固定)
如果测试文件和Postman集合的相对位置固定,直接使用相对路径。比如集合位于test/CoreDataGeneration.Tests/DataGeneration.Tests/PostMan/,文件位于test/AxiomAdministratorCore.DataGeneration.Tests/DataGeneration.Tests/GameInstall/,则相对路径示例:
"formdata": [ { "key": "gamePresetFormFile", "type": "file", "src": "../../../../AxiomAdministratorCore.DataGeneration.Tests/DataGeneration.Tests/GameInstall/11016_50300_HTML5Desktop-FeatureSlot-BurningDesire.zip" }, { "key": "gameContentFormFile", "type": "file", "src": "../../../../AxiomAdministratorCore.DataGeneration.Tests/DataGeneration.Tests/GameInstall/BurningDesire.zip" } ]
Newman运行时会基于集合文件所在目录解析相对路径。
额外验证步骤
在Pipeline中添加命令行步骤,验证文件是否存在:
dir $(System.DefaultWorkingDirectory)/test/AxiomAdministratorCore.DataGeneration.Tests/DataGeneration.Tests/GameInstall/
如果输出中没有目标文件,说明文件未被正确下载到Pipeline工作目录,需检查Artifact的发布或拉取配置。
内容的提问来源于stack exchange,提问作者Shanil
相关产品推荐
相关产品推荐

