测试脚本在 Postman 中为 运行,但在使用 Newman 的 Azure 管道中 运行 时在 1:1 处获得意外标记“<”

Test Script is running in Postman but got unexpected token '<' at 1:1 when ran in Azure pipeline using Newman

我已尝试按照 Medium post 上的说明在 Azure 中集成 Postman 集合 我在 newman 下进行了 Postman 测试 运行 但是我看到了错误。我已经尝试了 newman 插件和命令行任务。

错误显示 403 ip forbidden ,这意味着您所在的服务器 运行 脚本无权访问 api

参考这个回答。

关于您收到的 json 错误来自

    pm.response.json()

由于响应是html所以无法解析。

403 Ip Forbidden

根据此错误消息,您的 azure 应用似乎有 IP 限制。

您可以尝试将 Azure PowerShell 任务添加到 运行 以下脚本,以将当前 IP 添加到应用访问限制。

示例:如果您使用的是 Azure 应用服务,则可以使用以下脚本

$IP= Invoke-RestMethod http://ipinfo.io/json | Select -exp ip

$IP

Add-AzWebAppAccessRestrictionRule -ResourceGroupName "ResourceGroup" -WebAppName "AppName"  -Name "Ip example rule" -Priority 100 -Action Allow -IpAddress $IP

这是关于 the detailed script 的文档。

纽曼测试,您参考了博客。所以你会得到两个 Json 文件(一个是集合,另一个是环境变量)。

您可以参考以下流水线设置:

Yaml 编辑器:

steps:
- task: AzurePowerShell@5
  displayName: 'Azure PowerShell script: InlineScript'
  inputs:
    azureSubscription: 
    ScriptType: InlineScript
    Inline: |
     $IP= Invoke-RestMethod http://ipinfo.io/json | Select -exp ip
     
     $IP
     
     Add-AzWebAppAccessRestrictionRule -ResourceGroupName "ResourceGroup" -WebAppName "AppName"  -Name "Ip example rule" -Priority 100 -Action Allow -IpAddress $IP
    preferredAzurePowerShellVersion: 3.1.0

- script: |
   npm install -g newman
   
   
   
  displayName: 'Command Line Script'

- task: carlowahlstedt.NewmanPostman.NewmanPostman.NewmanPostman@4
  displayName: 'Newman - Postman'
  inputs:
    collectionFileSource: '$(build.sourcesdirectory)'
    Contents: 'kevintest123.postman_collection.json'
    environment: '$(build.sourcesdirectory)/test/versionenv.postman_environment.json'
    ignoreRedirect: false
    bail: false
    sslInsecure: false
    htmlExtraDarkTheme: false
    htmlExtraLogs: false
    htmlExtraTestPaging: false

经典编辑器: