Результаты теста должны быть сгенерированы, если вы используете задачу VSTest@2 для выполнения некоторых тестов. Вы можете проверить журнал задачи VSTest, чтобы проверить, куда выводится файл результатов теста. Обычно результатом теста по умолчанию является файл trx. Вы можете изменить расположение вывода, добавив resultsFolder: 'output location'
к задаче vstest.
Как только вы получите файл результатов теста, вы можете писать сценарии для Извлеките сводку результатов теста, добавив задачу скрипта.
Для приведенного ниже примера используйте скрипт powershell, чтобы извлечь сводку теста из файла trx, и установите для нее переменную env , которая сделает ее доступной в следующая задача.
- powershell: |
#get the path of the trx file from the output folder.
$path = Get-ChildItem -Path $(Agent.TempDirectory)\TestResults -Recurse -ErrorAction SilentlyContinue -Filter *.trx | Where-Object { $_.Extension -eq '.trx' }
$appConfigFile = $path.FullName #path to test result trx file
#$appConfigFile = '$(System.DefaultWorkingDirectory)\Result\****.trx' #path to test result trx file
$appConfig = New-Object XML
$appConfig.Load($appConfigFile)
$testsummary = $appConfig.DocumentElement.ResultSummary.Counters | select total, passed, failed, aborted
echo "##vso[task.setvariable variable=testSummary]$($testsummary)" #set the testsummary to environment variable
displayName: 'GetTestSummary'
condition: always()
Чтобы сделать переменную testSummary
доступной на следующем этапе, необходимо добавить зависимость на этом этапе на следующий этап. И используйте выражение dependencies.<Previous stage name>.outputs['<name of the job which execute the task.setvariable >.TaskName.VariableName']
для передачи сводки теста в переменную на следующих этапах.
Пожалуйста, проверьте приведенный ниже пример
stages:
- stage: Test
displayName: 'Publish stage'
jobs:
- job: jobA
pool: Default
...
- powershell: |
#get the path of the trx file from the output folder.
$path = Get-ChildItem -Path $(Agent.TempDirectory)\TestResults -Recurse -ErrorAction SilentlyContinue -Filter *.trx | Where-Object { $_.Extension -eq '.trx' }
$appConfigFile = $path.FullName #path to test result trx file
#$appConfigFile = '$(System.DefaultWorkingDirectory)\Result\****.trx' #path to test result trx file
$appConfig = New-Object XML
$appConfig.Load($appConfigFile)
$testsummary = $appConfig.DocumentElement.ResultSummary.Counters | select total, passed, failed, aborted
echo "##vso[task.setvariable variable=testSummary]$($testsummary)" #set the testsummary to environment variable
displayName: 'GetTestSummary'
condition: always()
- stage: Release
dependsOn: Test
jobs:
- job: jobA
variables:
testInfo: $[dependencies.Test.outputs['jobA.GetTestSummary.testSummary']]
steps:
Затем вы можете получить извлеченную информацию о результатах теста, ссылаясь на переменную $ (testInfo).
Надеюсь, что выше поможет!