如何在 Pytest JUNIT xml 中附加屏幕截图以显示在 Azure DevOps 上?

Posted

技术标签:

【中文标题】如何在 Pytest JUNIT xml 中附加屏幕截图以显示在 Azure DevOps 上?【英文标题】:How to attach screenshots at Pytest JUNIT xml to appear on Azure DevOps? 【发布时间】:2021-03-01 17:21:05 【问题描述】:

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

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

提前致谢!

【问题讨论】:

【参考方案1】:

我希望在执行测试期间截取的屏幕截图是 附在报告中

您可以尝试调用Create Test Result Attachmentrest 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

这个ticket给出了详细的指南,你可以参考它。

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

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

【讨论】:

以上是关于如何在 Pytest JUNIT xml 中附加屏幕截图以显示在 Azure DevOps 上?的主要内容,如果未能解决你的问题,请参考以下文章

pytest文档75 - 生成 junit-xml 测试报告

pytest.11.生成xml格式的测试报告

Pytest 可视化测试报告之 Allure

pytest执行并生成报告方式

testng和pytest哪个好用

pytest 从百草园到三味书屋....