PyTest 元数据被描述为一个 PyTest 插件,它提供对测试会话元数据的访问。这是一个对如此有用的插件过于谦逊的描述。
欢迎收听 Test and Code。本期节目由 porkbun.com 赞助,被《今日美国》评为 2023 年至 2025 年的最佳域名注册商。现在,Porkbun 为您下一个 .app 或 .dev 域名提供低于 6 美元的优惠价格(第一年)。非常适合开发者、网页设计师、工程师或任何科技人员。
.app 和 .dev 域名非常适合您的最新项目。在 .app 上展示您改变世界的应用程序,并使用 .dev 来创建您的博客、文档等等。与往常一样,每个 Porkbun 域名都附带许多免费赠品,例如 SSL 证书、Whois 保护隐私、URL 转发和托管试用版。
凭借这样的优惠,以及全年 365 天由真人提供的个性化支持,难怪如此多的科技人员和爱好者正在从 GoDaddy 等公司转向 Porkbun。要以低于 6 美元的价格获得您下一个 .app 或 .dev 域名的第一年使用权,请访问 porkbun.com/testandcode25 或点击您节目说明中的链接。
如果您已经在使用 PyTest HTML,那么您肯定已经安装了 PyTest 元数据,因为 PyTest 元数据是 PyTest HTML 的依赖项之一。但是,即使单独使用,PyTest 元数据也非常有用。那么您能得到什么呢?如果您安装 PyTest 元数据并像往常一样运行,您实际上不会看到太大区别。但是,如果您使用 -V 标志或 PyTest 的详细标志,
您会立即看到的一件事是,在测试数据的标题顶部,您会看到对添加的额外数据的描述。在您的 PyTest 输出的顶部,您会看到诸如根目录、缓存驱动器和测试会话起始行之类的内容。但是现在元数据也会在那里。现在,元数据,默认情况下,该行会添加 Python 版本。
平台、包和插件。因此,平台是一个编码的东西,它向您显示您正在使用哪种操作系统。在我的 Mac Mini 上,我看到 macOS 14.3.1、ARM 64 等。
包将列出您安装的所有 Python 包。然后是插件,即您安装的插件。如果您想跟踪这些信息,这已经非常有用了。
但是,您可以添加到该元数据部分。PyTest 元数据的真正妙处在于可以对其进行添加。您可以在命令行上执行此操作。您可以说添加 - -metadata 标志,然后添加 foo 和 bar。您可以添加任意数量的这些额外内容。为什么要这样做呢?例如,在 CI 中,可能会有额外的东西,例如我正在针对特定工具进行测试,或者我正在
针对 CI 中的测试环境进行测试,您可以将这些信息从命令行传递到元数据中,并将其与输出一起收集。稍后还有其他查看方法。我们稍后会讨论这一点。
您也可以从 JSON 中传递它。但我喜欢做的一件事不是在命令行中传递它,而是在测试函数或 conf 测试文件和夹具中传递它。您可以使用元数据夹具并添加信息。您还可以读取,因此您可以使用此元数据夹具来回传递信息。这也很有用。
例如,如果您尝试收集一些稍后要进行后处理的数据,您可以通过此元数据信息传递它。很酷。那么我们如何读取它呢?正如我所说,输出直接出现在输出中的标题行中。但是,如果您在一个管道中,您可能不会经常使用它,您可能会将输出保存在某个地方。但是
还有其他地方可以去。其中一个地方是您可以将其设置为导出到 JUnit XML。如果您使用的是使用 PyTest 的 XML 输出的 ACI 系统,您可以设置它,并且此插件的自述文件中包含有关在该 XML 文件中显示元数据的信息。一些 JSON 插件也允许您将该
信息导出到 JSON 输出。它还会显示在 pytest HTML 的顶部。事实上,在 pytest 元数据的自述文件的末尾,它显示了四个不同的插件,这些插件要么贡献要么读取元数据。因此,Pytest HTML 会在 HTML 输出的顶部显示您传入的所有元数据。
我还想说,您也可以修改它。因此,如果您不希望其中包含某些内容,例如某些默认值,您可以将其删除。什么会添加到它?
有趣的是,可能有很多东西会添加到它,但 PyTest base URL 就是其中之一。因此,如果它将基本 URL 添加到元数据中,PyTest Selenium 还会将驱动程序、功能和远程服务器添加到元数据中。还有一个,PyTest XR。
报告程序 HTML。这实际上是一个新的,对我来说是新的。我需要检查一下。它看起来像是 PyTest 的另一种 HTML 输出。但那是 PyTest。它位于自述文件的底部,但它是 PyTest reporter HTML 1。它也会在那里显示元数据。这可能看起来像是
内部棒球方面的事情,它确实有点像。但是,如果您正在使用 CI 系统,或者如果您正在沿线解析数据,那么能够轻松地将额外信息与您的测试结果信息一起传递,并在 CI 或管道的一部分中传递下去,这确实非常有帮助。非常酷。非常有帮助。很高兴它存在。一直都在使用它。
感谢所有通过 Patreon 或通过 courses.pythontest.com 上的课程学习 PyTest 来支持节目的所有人。我最近做了一个我很兴奋的改变。完整的 PyTest 课程现在是完整的 PyTest 课程包。它曾经是一个大型课程,现在是三个课程。
因为您在 PyTest 之旅的不同阶段确实需要它们。第 1 部分,PyTest 主要功能,提供了一个循序渐进的介绍,涵盖了 PyTest 的超级功能,包括夹具、参数化、标记等等。掌握主要功能并开始工作。第 2 部分,使用 PyTest 进行项目开发,包含诸如调试、模拟、持续集成等战略性主题。第 2 部分非常适合将 PyTest 应用于工作或开源项目时使用。第
第 3 部分:PyTest 助推火箭,探索插件,包括第三方插件和构建您自己的插件,
以及高级参数化。虽然第 3 部分可以在其他两部分之后立即学习,但最好先使用 pytest 一段时间,然后再探索您可以用它做更多的事情。我还为每个课程的开头添加了新的介绍视频,在结尾添加了祝贺视频,以及可打印的证书。无论如何,我认为新的结构更有意义。这些都在 courses.pythontest.com 上。今天的节目就到这里。感谢收听。现在开始测试一些东西吧。