We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode pytest-md and pytest-md-report: Markdown reports for pytest

pytest-md and pytest-md-report: Markdown reports for pytest

2025/3/1
logo of podcast Test & Code

Test & Code

AI Deep Dive AI Chapters Transcript
People
B
Brian Okken
Topics
Brian Okken: 我讨论了两个 pytest 插件:pytest-md 和 pytest-md-report。pytest-md 生成简单的 markdown 格式的测试报告,支持详细输出和 emoji。虽然它最近没有更新,但仍然可以在较新的 Python 和 pytest 版本上运行。pytest-md-report 生成更复杂的 markdown 表格形式的测试报告,包含文件路径、通过、失败、错误、跳过、xfail 和 xpass 等信息,并用颜色编码显示测试结果。它支持详细报告,可以显示每个测试函数的结果,并提供多种配置选项,例如忽略值为零的列、自定义颜色、支持多种 markdown 格式以及排除列。这两个插件的代码量都不大,并且是开源的,可以作为学习和参考。我个人更推荐 pytest-md-report,因为它具有彩色编码的表格和独立的详细模式,使用起来更方便。

Deep Dive

Chapters
This chapter explores the standard pytest output and introduces two plugins, pytest-md and pytest-md-report, that enhance reporting capabilities by generating markdown reports. It discusses their features and functionalities, including markdown table formatting and customization options.
  • pytest's standard output has improved significantly, offering percentages, test file details, and test case results.
  • pytest-md generates markdown reports summarizing test results (pass/fail/skip).
  • pytest-md supports verbose output with more details and emojis.
  • pytest-md's last update was in 2019, but it still functions well with newer Python versions.

Shownotes Transcript

标准 pytest 输出实际上相当不错。自从我开始使用 pytest 以来,它已经有了很大的改进。它有很好的百分比显示。即使在默认情况下,你也可以看到运行的测试文件,所有测试用例本身都显示为通过的点。然后右侧会显示测试套件完成的百分比。它实际上相当不错。

并且有很多方法可以自定义它。有很多方法可以自定义它。我们将看看一些可以为你自定义它的插件。我们将从查看几个将生成 markdown 报告的 PyTest 插件开始,这很酷。

欢迎收听 Test & Code。本期节目由 HelloPyTest(学习 PyTest 的最快新方法)和 Python Test 社区赞助播出。访问 courses.pythontest.com 了解更多信息。查看顶级 PyTest 插件列表,其中列出了几个插件。在 2 月份的列表中,排名第六的是 PyTest-MD,PyTest-MD。这是一个用于为 PyTest 结果生成 markdown 报告的插件。

然后在第 102 位是 PyTest MD report。这是一个 PyTest 插件,用于使用 Markdown 表格格式生成测试结果报告。所以一个使用 Markdown,一个使用 Markdown 表格。这很酷。这就是我们今天要研究的内容。让我们从第一个开始。PyTest-MD。这是一个……

由 Rafael Pierzina 生成的插件,它看起来最近没有得到很多改进。如果我查看 PyPI,它显示它支持 Python 3.7。好吧,

3.8 仍然是弃用的。所以我试用了它。所以我正在 Python 3.13.2 上尝试这个,并使用 PyTest 8.3.4,这就是我尝试这些的版本。即使它没有更新,它仍然运行良好。它正在做一些 PyTest 长期以来一直支持的相当标准的事情。Raphael 也是 PyTest

核心维护者之一,好吧,他过去是。这仍然很有趣。那么 PyTestMD 做了什么呢?如果你安装它,它会 pip install 它。然后,如果你传入 --MD 并给它一个文件名,例如 report.md,它会执行正常操作,然后它会生成一个报告文件。

并且,就像,它只是一个 markdown 格式,它列出了通过、失败和跳过的测试数量以及所有内容的摘要。现在,如果你传入 -V,你可以获得更详细的输出,这将为你提供每个测试通过或失败的更多细节。实际上,如果你使用 -V,它将列出

它将列出每个测试,即使是通过的测试,并告诉你它们运行的时间。这实际上很有趣。它甚至与 Emoji 集成在一起。他还有一个名为 PyTest Emoji 的插件。如果你也安装了它并向你的报告传入 --emoji 和 -V,实际上,你是否拥有 V 都无关紧要。它会添加一些表情符号,例如通过的开心脸。对于错误,则是一个生气的小脸。这很酷。

X-Passed 是一个惊喜。不错。X-Failed 是一个令人昏昏欲睡或悲伤的表情。我不知道。无论如何,有表情符号。这很有趣。就像我说的,自 2019 年以来它没有得到太多关注。我认为是 2019 年。让我们看看历史记录。是的,最后一次修改是在 2019 年 7 月。Raphael 在那个时候做了一些培训和一些事情。

演示。所以我不知道这是否与类似的事情有关。但无论如何,你仍然可以看看它。查看代码很有趣。而且它仍然可能对生成一些营销报告有用。这很好。接下来,让我们看看

PyTestMD report。它有一些更多的活动。所以,如果我查看发布历史记录,它始于 2020 年,最近一次发布是在 2025 年 1 月。所以就在上个月。很好。这是做什么的?它是

它正在生成一个报告。哦,这很整洁。所以 Raphael 的 pytestmd 只向文件报告。它不会更改标准输出。现在,mdreport 会更改标准输出。因此,如果你安装了它并传入 --md --report,

最后,它将列出一个表格,一个 markdown 表格,其中包含,让我们看看,文件路径、通过、失败、错误、跳过、x 失败、x 通过,然后是每个文件的子总数。所以它为不同类型的项目都包含这些列。

以及每个列中测试的数量,例如文件中通过的数量。因此每个文件都是一行。这很好。并且它们是彩色编码的。所以失败的文件是红色的。所有测试都通过的文件是绿色的。然后对于跳过、X 失败和 X 通过,则为黄色。然后总计的颜色,例如,如果存在任何失败,则为红色,等等。

如果你,你可以拥有详细的报告,但这很酷。它不与 -V 绑定。它有自己的详细标志可以传入。而不是按文件,然后它将列出,它仍然会告诉你它在哪个文件中,但它会添加另一列,即函数。因此,每个测试函数都有一行。所以这是一个更大的表格,但这很酷。它实际上是一个外观漂亮的表格。不错。

它也有很多很酷的标志。如果你,默认情况下,如果某个值为零,例如如果测试文件中的 X 失败数为零,

它将显示为零,但它将是一个浅灰色的零。所以它很,你知道,无关紧要,但如果你不想要任何,特别是如果你不使用颜色,你可能根本不想要任何零,这样更容易阅读。你可以说将 MD 报告零设置为为空,这将清除它们。呃,你也可以更改颜色,因此你可以控制颜色,呃,

如果你根本不想要颜色,你可以说 report color never。它有很多配置。你可以在 Toml、私有项目 Toml 中设置配置。我想你的任何文件也可以。是的,我相信你可以。是的,它支持 any 和 Toml 和 setup.cfg。但这仅仅是因为它正在使用

使用与 PyTest 相同的设置系统。这很酷。那么如果你想要一个文件呢?所以默认情况下,它只是打印出来,但你可以将它传入一个文件,它将转到一个文件。如果你想在文件和标准输出上同时看到它,还有一个 T 标志。你也可以这样做。如果该 markdown 文件的格式与你想要的格式不太相同怎么办?所以也许你想要 GFM

或 GitHub。它们不同吗?无论如何,它支持几种不同的 Markdown 版本,这很好。另一件事是,也许你的系统中并没有真正使用 XFails,因此你并不真正需要 XFail 和 XPass 列。如果是这种情况,你可以告诉它只排除这些列。这很好。无论如何,这是一个非常有趣的插件。我

我认为两者,它们都不是很多代码。它们不是超级庞大。这正是 PyTest 插件的巧妙之处之一。所以这是一个很有趣的东西。如果其中一个更接近你的需求,你可以看看它们是如何编写这个代码的,并查看一下。由于这些是开源的,你当然可以访问它。所以检查一下。

我强烈建议检查两者,但特别是 PyTest MD report,因为我喜欢那些彩色编码的表格。我也非常喜欢详细程度是分开的。实际上,如果你传入 -V,它也会执行详细操作,但我认为你可以关闭……无论如何,有可能不使用详细的 PyTest 仍然拥有每个函数的报告表,这很酷。无论如何,我认为让我们……

讨论报告的不同方法很有趣。所以在下一集中,我可能会使用另一个插件,它也会生成不同类型的报告。

感谢您的收听,并感谢所有通过购买课程支持该节目的所有人,包括 Hello PyTest(学习 PyTest 的最快新方法)和完整的 PyTest 课程,如果你想真正成为 PyTest 专家。两者都可以在 courses.pythontest.com 上获得,你也可以在那里加入 Python 测试社区。现在就到这里。现在去测试一些东西吧。