我在Azure DevOps生成过程中正在运行基于pytest的测试套件。我安排了两个工作来针对两个不同的环境运行这些测试。
在每个作业中,我使用脚本任务运行pytest测试并生成junit样式的xml输出文件,然后让PublishTestResults任务发布该xml文件。这很好用,我可以在azure构建测试报告用户界面中细读我的测试结果-但前提是所有测试都通过。如果任何测试失败,则会跳过发布任务,并且不会在UI中报告测试。
YML提取物:
- job: 'RunTestsQA'
continueOnError: True
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.6'
architecture: 'x64'
- task: DownloadSecureFile@1
inputs:
secureFile: 'ConfigFile'
- script: pip install -r requirements.txt
displayName: 'Install Requirements'
- script: |
pytest -m smoke --ENV=qa --log-file $SYSTEM_ARTIFACTSDIRECTORY/smoke-qa.log --junitxml="TEST-qa-smoke.xml"
displayName: 'Test with pytest'
# PUBLISH JUNIT RESULTS
- task: PublishTestResults@2
inputs:
condition: succeededOrFailed()
testResultsFormat: 'JUnit' # Options: JUnit, NUnit, VSTest, xUnit
testResultsFiles: '**/TEST-*.xml'
#searchFolder: '$(System.DefaultWorkingDirectory)' # Optional
mergeTestResults: false # Optional
testRunTitle: 'API_CHECK QA'
#buildPlatform: # Optional
#buildConfiguration: # Optional
publishRunAttachments: true # Optional
通过一些试验,我已经能够确认XML文件始终被创建。我需要在这里解决什么?如果仅在通过测试时显示测试报告,所以它并不是超级有用。
答案 0 :(得分:0)
我正在使用Ruby和Minitest,但是我发现以下设置允许运行PublishTestResults任务:
- script: |
pytest -m smoke --ENV=qa --log-file $SYSTEM_ARTIFACTSDIRECTORY/smoke-qa.log --junitxml="TEST-qa-smoke.xml"
displayName: 'Test with pytest'
continueOnError: true
我发现此设置的唯一问题是,如果构建失败,它将报告为“部分成功”而不是“失败”。
编辑:
当然,如果您的构建过程在测试任务之后有任何部署任务,则您可能不想使用此设置。
答案 1 :(得分:0)
在您的任务描述中,条件被有效地列为任务输入,因此完全不会考虑。
您有:
# PUBLISH JUNIT RESULTS
- task: PublishTestResults@2
inputs:
condition: succeededOrFailed()
testResultsFormat: 'JUnit' # Options: JUnit, NUnit, VSTest, xUnit
testResultsFiles: '**/TEST-*.xml'
正确的设置是
# PUBLISH JUNIT RESULTS
- task: PublishTestResults@2
inputs:
testResultsFormat: 'JUnit' # Options: JUnit, NUnit, VSTest, xUnit
testResultsFiles: '**/TEST-*.xml'
condition: succeededOrFailed()
您可以使用条件进行操作的完整列表为here