powershell - 如何通过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
... estResult = Invoke-RestMethod -Method Post -ContentType 'application/ ...
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebExc eption + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
[错误]PowerShell 以代码“1”退出。
有人可以帮助我如何调用 rest post 方法将文件附加到测试运行吗?
解决方案
根据错误,它表明指定的文件名无效。
来自官方教程:附件 - 创建测试运行附件
filename string Attachment filename
它只是不应包含文件路径的文件名。建议您先在 postman 等第三方工具上运行 Post API,检查它是否适用于 Azure DevOps,然后将其移至 powershell 脚本。
您还可以查看此博客:Azure DevOps Rest API。17. 为使用代码调用相同 Rest API的测试结果添加错误和附件。
推荐阅读
- php - CSS中的PHP变量:未定义的变量
- nginx - flask oidc auth 回调重定向到 http 而不是 https
- javascript - Fullcalendar 3 - 在 Select 函数上获取当前实例
- serverless-framework - 在无服务器框架中,有没有办法在 lambda 运行时更新由 ssm 变量填充的环境变量?
- python - 如何在 POST 上使多线程字段的序列化程序类为空
- c# - .NET Core Web API 处理已发送响应后的异常
- javascript - Django - 如何拨打电话号码并一键打开表单页面?
- sql - 将数据格式从行更改为列
- c# - 在申请期间注册 CultureInfo
- javascript - javascript中el.classList.remove的时间复杂度是多少