pytest-html必须是我最喜欢的插件之一。pytest-html是pytest的一个插件,它会为测试结果生成HTML报告。本期节目深入探讨了这个插件的一些超酷之处。欢迎来到Test & Code。本期节目由像您一样注册了courses.pythontest.com上的一个或两个课程的其他人赞助。
那里有一些变化。“完整的pytest课程”现在是“完整的pytest课程包”。它已被拆分为三个单独的课程,因为您在pytest之旅的不同阶段确实需要它们。pytest Primary Power提供了对测试函数、fixture、参数化和标记的深入培训。实际上,这是有效使用pytest所需的pytest的超能力。
然后是将pytest与项目一起使用,其中包含更多战略性和按需主题,例如调试、测试策略、模拟。当您需要高级参数化技术或希望使用插件在项目之间共享代码时,可以使用pytest Booster Rockets。单独的课程Hello Pytest专注于快速入门所需的核心pytest功能。非常适合团队,您希望每个人都能达到良好的pytest范围基础水平。
所有这些都在courses.pythontest.com上。开始使用pytest-html非常容易。您只需使用HTML标志运行pytest并为其指定文件名,例如report.html之类的名称,它就会生成报告。默认情况下,它实际上会将许多额外内容(如CSS等)放入目录中。但是您可以传入一个标志self-contained HTML,它会将所有这些内容都放入一个文件中。
因此您只需一个HTML文件作为输出。这通常是我所做的。如果您要将报告移动到其他地方(例如通过电子邮件发送给某人),这种方法也很有效。报告顶部有一些环境信息和测试运行的摘要,例如测试数量、花费的时间,
以及所有结果类型(例如通过、跳过、失败、错误等)的数量。然后您将获得一个结果表。这是一个包含结果状态的表,这些状态也是彩色的。因此,失败显示为红色,通过显示为绿色等。然后您将获得测试名称和持续时间。我实际上不记得默认列是什么,因为我经常自定义此表。表列都是可排序的。因此,您可以按结果、测试名称或持续时间等进行排序。
按结果排序意味着您可以单击顶部,然后您将获得所有位于顶部的失败项等。但是您也可以使用该表来查找如果您的持续时间,您可以查找较慢的测试或较快的测试。对于任何包含额外信息(如错误或失败等)的内容,您可以单击结果,它会展开到一个显示回溯或周围任何信息的块中。
如果您以前从未见过,您必须尝试一下。即使您只是在本地调试大型套件,它也非常有用,但它也可以很好地链接到CI服务器等。存储库自述文件中还有一个报告屏幕截图,如果您现在不想尝试,可以查看它。
但我强烈建议您尝试一下。pytest-html的一大优点是可定制性。关于自定义的文档非常清晰且有用。我还将在节目说明中提供指向文档的链接。您可以自定义CSS,也可以向环境部分添加内容。为此,还有一个名为pytest-metadata的插件,它使这变得非常容易。这些额外数据通过命令行甚至
在运行时使用pytest挂钩传递。对于结果表,您可以添加列,可以自定义现有列,可以隐藏列,可以添加链接、额外数据甚至图片等内容。我已经看到有人在测试期间截取屏幕截图,如果测试失败,他们会将其附加到报告中。这非常酷,非常有用。
还记得我说结果表顶部有一个环境和摘要部分吗?现在让我们回到那里。环境部分默认情况下包含Python版本、平台、您正在运行的操作系统、pytest和插件版本以及哪些pytest插件可用。但是您可以添加到该部分。最简单的方法是使用pytest-metadata插件。
这是一个不同的插件,它本身就足够酷,值得单独介绍一期节目。但是当您安装pytest-html时,它也会安装。您可以使用它来扩展命令行、挂钩函数或fixture中的环境报告。如果您不想要,您甚至可以删除一些默认内容。
我喜欢添加代码版本、硬件选项、我正在测试的内容的设备配置等内容。您可以将任何您认为对报告顶部有帮助的内容放在那里,您可以非常轻松地做到这一点。现在让我们看一下摘要部分下方的内容。您还可以通过pytest-html结果摘要挂钩函数添加到摘要中。
该hug函数传递三个参数,即前缀、摘要和后缀,它们只是您可以添加到HTML的列表,这些列表会显示在报告中。对我来说,我不希望使默认视图过于混乱,因此我通常将额外的摘要信息粘贴到带有摘要行的详细信息HTML块中,它只显示为一行,某人可以单击它以查看更多信息。
我最近刚刚使用此功能将运行时收集的一些聚合测试数据包含到报告中。将其折叠可以确保只有关心它的人才需要查看它。此外,能够控制HTML可以非常轻松地按您想要的方式呈现它。无论如何,我喜欢pytest-html。如果您还没有尝试过,请查看一下。感谢收听。感谢所有通过在courses.pythontest.com上选修一两个课程来支持该节目的所有人。
无论您今天是否需要开始使用pytest,或者想要增强您的pytest技能,我都为您准备了一门课程。今天就到这里。现在就去测试一些东西吧。