首页 > 解决方案 > 如何在 Pytest JUNIT xml 中附加屏幕截图以显示在 Azure DevOps 上?

问题描述

如何使用 Pytest 在 JUNIT xml 中自动添加屏幕截图?我希望将执行测试期间截取的屏幕截图附加到报告中,但是这部分的Pytest文档不是很清楚。

此外,Azure DevOps 文档说它可以自动将所有生成的文件作为附件上传。这是否取代了手动附加文件的需要?它如何将文件 A 与测试 X 附加在一起?

提前致谢!

标签: seleniumjunitazure-devopspytestazure-pipelines

解决方案


我希望将执行测试期间截取的屏幕截图附加到报告中

您可以尝试调用Create Test Result Attachment rest api 将屏幕截图附加到测试附件选项卡。

powershell 任务中的示例脚本:

$file= [IO.File]::ReadAllBytes("filepath\$Name.png")
$Base64file= [Convert]::ToBase64String($file)
echo $Base64file

$token = "PAT"

$url="https://dev.azure.com/{org}/{proj}/_apis/test/Runs/$(runId)/results/$($TestResultID)/attachments?api-version=6.0-preview.1"

$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))

$JSON = "
    {
       `"stream`": `"$Base64file`",
       `"fileName`": `"$Name.png`",
       `"comment`": `"Test attachment upload`",
       `"attachmentType`": `"GeneralAttachment`"
    }"
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Post -Body $JSON -ContentType application/json

这张给出了详细的指南,您可以参考它了解详细信息。

另外,您可以直接尝试使用Publish screenshots for test failure扩展Publish test result screenshot中的任务。

此扩展提供了一个构建任务以集成到您的持续集成管道中。此任务会将屏幕截图上传到来自 Visual Studio 测试 (TRX) 以外的来源的测试结果报告,例如来自 jUnit。


推荐阅读