首页 > 解决方案 > 如何通过powershell使用rest api在azure devops中创建测试运行附件

问题描述

我正在尝试使用我的 yaml 中的 powershell 任务通过 rest api 将 html 文件附加到测试运行。以下是我使用过的任务。

- 任务:PowerShell@2

          inputs:
            targetType: 'inline'
            script: |
              $username = "" 
              $token = "" 
              $instance = "" 
              $teamProjectName = ""

              #create auth header to use for REST calls 
              $accessToken = ("{0}:{1}" -f $username,$token) 
              $accessToken = [System.Text.Encoding]::UTF8.GetBytes($accessToken) 
              $accessToken = [System.Convert]::ToBase64String($accessToken) 
              $headers = @{Authorization=("Basic {0}" -f $accessToken)} 
              $runId = "12345"
              Write-Host $runId
              $filePath = "d:\a\1\UIAutomation\report123.html"
              $Stream = "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABlSURBVDhP7cxBCsAgDERR739pG/CnGJI0FopQ8O2cjNP6R85QbeNQU7wT1dkijaQ3vkZoWElaoTeJojW01cYh0jwfgiFBV/lEjOZtacijN/nLkOBHhIaVDgn+Wdycp6FXzlCl9wt0Y0cAzHo/zgAAAABJRU5ErkJggg=="
              $uri = "https://$instance/$teamProjectName/_apis/test/Runs/$runId/attachments?api-version=5.1-preview.1"
              $body = @{
                        'stream' = $Stream
                        'fileName' = $filePath
                        'comment' = 'Test attachment upload'
                        'attachmentType' = 'GeneralAttachment'
                        }
              $testResult = Invoke-RestMethod -Method Post -ContentType 'application/json' -Headers $headers -Uri $uri -Body (ConvertTo-Json $body -Depth 10)
              Write-Host $testResult 

我在控制台中收到错误说明..

Invoke-RestMethod : {"$id":"1","innerException":null,"message":"指定的文件名无效。文件名包含无效

字符 ':'。\r\n参数名称:fileName","typeName":"Microsoft.VisualStudio.Services.Common.VssServiceException,

Microsoft.VisualStudio.Services.Common","typeKey":"VssServiceException","errorCode":0,"eventId":3000}

在 D:\a_temp\077f26bc-c683-457d-be48-78fe5200d6a4.ps1:32 char:15

[错误]PowerShell 以代码“1”退出。

有人可以帮助我如何调用 rest post 方法将文件附加到测试运行吗?

标签: powershellrestazure-devops

解决方案


根据错误,它表明指定的文件名无效。

来自官方教程:附件 - 创建测试运行附件

filename    string    Attachment filename

它只是不应包含文件路径的文件名。建议您先在 postman 等第三方工具上运行 Post API,检查它是否适用于 Azure DevOps,然后将其移至 powershell 脚本。

您还可以查看此博客:Azure DevOps Rest API。17. 为使用代码调用相同 Rest API的测试结果添加错误和附件。


推荐阅读