Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure管道:如何在VS测试任务中添加失败的selenium Xunit测试用例附件_Selenium_Azure Devops_Azure Pipelines_Xunit2 - Fatal编程技术网

Azure管道:如何在VS测试任务中添加失败的selenium Xunit测试用例附件

Azure管道:如何在VS测试任务中添加失败的selenium Xunit测试用例附件,selenium,azure-devops,azure-pipelines,xunit2,Selenium,Azure Devops,Azure Pipelines,Xunit2,我将Xunit2 selenium框架用于自动化测试用例。有些案例在管道中失败了。我想在测试选项卡中看到失败测试用例的附件。如何使用VS测试任务完成此任务? 选项publishRunAttachments:true,它将更新附件以测试运行附件选项卡,请检查下面的图片 VS测试任务运行后,我们可以通过变量VSTEST\u TESTRUNID获取运行ID 然后,我们可以调用RESST API向测试结果附件选项卡添加附件 请求API: POST https://dev.azure.com/{org

我将Xunit2 selenium框架用于自动化测试用例。有些案例在管道中失败了。我想在测试选项卡中看到失败测试用例的附件。如何使用VS测试任务完成此任务?

选项
publishRunAttachments:true
,它将更新附件以测试运行附件选项卡,请检查下面的图片

VS测试任务运行后,我们可以通过变量
VSTEST\u TESTRUNID
获取运行ID

然后,我们可以调用RESST API向测试结果附件选项卡添加附件

请求API:

POST https://dev.azure.com/{organization}/{project}/_apis/test/Runs/{runId}/attachments?api-version=6.0-preview.1
请求机构:

{
  "stream": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABlSURBVDhP7cxBCsAgDERR739pG/CnGJI0FopQ8O2cjNP6R85QbeNQU7wT1dkijaQ3vkZoWElaoTeJojW01cYh0jwfgiFBV/lEjOZtacijN/nLkOBHhIaVDgn+Wdycp6FXzlCl9wt0Y0cAzHo/zgAAAABJRU5ErkJggg==",
  "fileName": "imageAsFileAttachment.png",
  "comment": "Test attachment upload",
  "attachmentType": "GeneralAttachment"
}
你也可以检查一下

更新1

我们可以添加taskpower shell,并通过以下脚本调用rest api:

$connectionToken="{PAT}"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
$URL = "https://dev.azure.com/{organization}/{project}/_apis/test/Runs/{runId}/attachments?api-version=6.0-preview.1" 
$body =@"
{
  "stream": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABlSURBVDhP7cxBCsAgDERR739pG/CnGJI0FopQ8O2cjNP6R85QbeNQU7wT1dkijaQ3vkZoWElaoTeJojW01cYh0jwfgiFBV/lEjOZtacijN/nLkOBHhIaVDgn+Wdycp6FXzlCl9wt0Y0cAzHo/zgAAAABJRU5ErkJggg==",
  "fileName": "imageAsFileAttachment.png",
  "comment": "Test attachment upload",
  "attachmentType": "GeneralAttachment"
}
"@
$Result = Invoke-RestMethod -Uri $URL -ContentType "application/json" -Body $body -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method POST
更新2

检查下面的图片并注意URL

根据您之前共享的屏幕截图,您似乎希望向测试运行添加附件,而不是测试结果。所以我们只需要测试运行ID,我们可以在任务vs测试结束后从变量中获取测试运行ID

如果您想向测试结果添加附件,我们可以通过测试运行ID列出所有测试结果

示例URL:

GET https://dev.azure.com/{organization}/{project}/_apis/test/Runs/{RunID}/results
通过测试结果ID和测试运行ID向测试结果添加附件

列出所有测试结果ID的示例power shell脚本

$connectionToken="{PAT}"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
$URL = "https://dev.azure.com/{organization}/{project}/_apis/test/Runs/{RunID}/results"
$Result = Invoke-RestMethod -Uri $URL -Headers @{authorization = "Basic $base64AuthInfo"} -Method Get 
 foreach($Run in $Result.value){
 Write-Host "This test run contain" $Run.id "and the test reuslt name is" $Run.testCase.name
 }
更新3

$connectionToken="{PAT}"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
$URL = "https://dev.azure.com/{organization}/{project}/_apis/test/Runs/134/results"
$Result = Invoke-RestMethod -Uri $URL -Headers @{authorization = "Basic $base64AuthInfo"} -Method Get 
#List all test result  get the test result ID via result
foreach($Run in $Result.value){

#Get the test result ID via result
If($Run.outcome -eq "Failed"){
$TestResultID = $Run.id
#Write-Host $TestResultID


#Add attachment via test run ID and test result ID
$TestResultAttachmentURL = "https://dev.azure.com/{organization}/{project}/_apis/test/Runs/{runId}/Results/$($TestResultID)/attachments?api-version=6.0-preview.1" 

$body =@"
{
  "stream": "VXNlciB0ZXh0IGNvbnRlbnQgdG8gdXBsb2FkLg==",
  "fileName": "textAsFileAttachment.txt",
  "comment": "Test attachment upload",
  "attachmentType": "GeneralAttachment"
}
"@
$TestResultAttachmentResult = Invoke-RestMethod -Uri $TestResultAttachmentURL -ContentType "application/json" -Body $body -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method POST
}
}
更新4

$AzureDevOpsPAT = {PAT}
$AzureDevOpsAuthenicationHeader = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($AzureDevOpsPAT)")) }
$UriOrga = "https://dev.azure.com/{organization}/{project}/" 
$uriAccount = $UriOrga + "_apis/test/runs?api-version=6.0"

$response = Invoke-RestMethod -Uri $uriAccount -Headers $AzureDevOpsAuthenicationHeader -Method Get
$testRunsIdSorted = $response.value | sort-object id -Descending
Write-Host "##vso[task.setvariable variable=runId]$($testRunsIdSorted[0].id | ConvertTo-Json -Depth 100)"
$result = Invoke-RestMethod -Uri https://dev.azure.com/{organization}/{project}/_apis/test/runs/$($testRunsIdSorted[0].id)/results?api-version=6.0 -Headers $AzureDevOpsAuthenicationHeader -Method Get

#List all test result  get the test result ID via result
foreach($Run in $result.value){

#Get the test result ID via result
If($Run.outcome -eq "Failed"){
$TestResultID = $Run.id
#Write-Host $TestResultID


#Add attachment via test run ID and test result ID
$TestResultAttachmentURL = "https://dev.azure.com/{organization}/{project}/_apis/test/Runs/$($runId)/Results/$($TestResultID)/attachments?api-version=6.0-preview.1" 

$body =@"
{
  "stream": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABlSURBVDhP7cxBCsAgDERR739pG/CnGJI0FopQ8O2cjNP6R85QbeNQU7wT1dkijaQ3vkZoWElaoTeJojW01cYh0jwfgiFBV/lEjOZtacijN/nLkOBHhIaVDgn+Wdycp6FXzlCl9wt0Y0cAzHo/zgAAAABJRU5ErkJggg==",
  "fileName": "imageAsFileAttachment.png",
  "comment": "Test attachment upload",
  "attachmentType": "GeneralAttachment"
}
"@
$TestResultAttachmentResult = Invoke-RestMethod -Uri $TestResultAttachmentURL -ContentType "application/json" -Body $body -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method POST
}
}


如果我点击.png文件,它什么也不显示。

你能检查一下
testRunner
文件的
YMAL片段吗。检查是否应将
#publishRunAttachments:true
testResultsFiles
选项更改为*/TEST-。trx@KunduK我在VS测试任务中启用了上载附件,但在YAML代码段中看不到publishRunAttachment。我不知道为什么?嗨@Gkm,检查这个,添加代码
publishRunAttachments:true
然后在这里分享结果。publishRunAttachments:true,我没有看到VSTEST_RUNID,但我可以看到测试运行id变量。是一样的吗?要调用Rest API,我应该添加调用Rest API任务?嗨@Gkm,检查更新1,我们需要添加任务power shell并调用Rest API来添加附件。您可以检查VS测试任务日志,它应该显示测试运行ID,然后将其与变量测试运行ID进行比较,它应该是相同的。我是否需要编写另一个脚本来传递此脚本的runId和resultId?另外,我需要添加测试失败的屏幕截图,从这里我也可以这样做,对吗?因为现在我在Add attachment选项卡中看到了.trx文件,而之前在Debug选项卡中看到了这个失败的测试描述,并且格式优美,已经可以读取了。Hi@Gkm,我添加了powershell脚本来列出所有测试结果ID,然后我们可以通过测试运行ID和测试结果ID添加附件。您可以尝试一下,然后在此处共享结果吗?您好@Vito Liu MSFT,您能看到更新4吗。我已经添加了如何获取测试运行id。