将屏幕截图添加到 XUNIT 测试结果,从机器人框架到 Azure 管道测试选项卡



有没有一种简单的方法可以链接机器人框架生成的 XUNIT 样式测试结果中的屏幕截图,并通过 Azure 管道的"发布测试结果"任务将它们加载到"测试"选项卡?

类似于它们处理 VSTS 结果文件的方式。

提前谢谢。

恐怕没有一个简单的方法可以实现上述目标。

解决方法是使用创建测试结果附件 rest api 将屏幕截图更新为测试用例的附件。

POST https://dev.azure.com/{organization}/{project}/_apis/test/Runs/{runId}/Results/{testCaseResultId}/attachments?api-version=5.1-preview.1

为了使用上述创建测试结果附件休息api。您需要调用查询测试运行 rest api 来获取runId

GET https://dev.azure.com/{organization}/{project}/_apis/test/runs?buildIds={buildIds}&buildDefIds={buildDefIds}&api-version=5.1

然后,您需要调用列表测试结果 rest api 来获取testCaseresultId

GET https://dev.azure.com/{organization}/{project}/_apis/test/Runs/{runId}/results?api-version=5.1

因此,您可以在管道中添加脚本任务以在 rest API 上运行。请参阅以下示例:

- powershell: |  
$url = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/test/runs?buildIds=1417&buildDefIds=8&api-version=5.1"
$runs = Invoke-RestMethod -Uri $url -Headers @{authorization = "Bearer $(system.accesstoken)"} -ContentType "application/json" -Method get
$runId = $runs.value[-1].id

#get testCaseresultId
$resuilturl = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/test/Runs/$($runId)/results?api-version=5.1"
$results = Invoke-RestMethod -Uri $resuilturl -Headers @{authorization = "Bearer $(system.accesstoken)"} -ContentType "application/json" -Method get
#for example get first testCaseresultId 
$testCaseResultId = $results.value[0].id

#create test result attachment.
$atturl = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/test/Runs/$($runId)/Results/$($testCaseResultId)/attachments?api-version=5.1-preview.1"
$body='{
"stream": "VXNlciB0ZXh0IGNvbnRlbnQgdG8gdXBsb2FkLg==",
"fileName": "$(System.DefaultWorkingDirectory)/screenshot-1.png",
"comment": "Test attachment upload",
"attachmentType": "GeneralAttachment"
}'

Invoke-RestMethod -Uri $atturl -Headers @{authorization = "Bearer $(system.accesstoken)"} -ContentType "application/json" -Method post -Body $body

最新更新