CI 流水线¶
基本原理¶
在 CI 流水线中进行测试的目标与本地测试不同。诚然,您可以在自己的电脑上快速编辑代码并再次运行测试,但这在 CI 流水线中是不可能的。它们在单独的服务器上运行,并由特定的操作触发。
基于这一观察,pytest 能够检测自身是否处于 CI 环境中,并相应地调整其某些行为。
CI 如何被检测到¶
当以下任一环境变量被设置时(无论其值如何),pytest 都会知道它处于 CI 环境中
CI
:许多 CI 系统使用。BUILD_NUMBER
:Jenkins 使用。
对 CI 的影响¶
目前,pytest 在 CI 环境中行为的影响有限。
当检测到 CI 环境时,简短的测试摘要信息的输出将不再被截断为终端大小,即会显示完整消息。
# content of test_ci.py import pytest def test_db_initialized(): pytest.fail( "deliberately failing for demo purpose, Lorem ipsum dolor sit amet, " "consectetur adipiscing elit. Cras facilisis, massa in suscipit " "dignissim, mauris lacus molestie nisi, quis varius metus nulla ut ipsum." )
在本地运行,不带任何额外选项,将输出
$ pytest test_ci.py ... ========================= short test summary info ========================== FAILED test_backends.py::test_db_initialized[d2] - Failed: deliberately f...
(注意被截断的文本)
而在 CI 上运行将输出
$ export CI=true $ pytest test_ci.py ... ========================= short test summary info ========================== FAILED test_backends.py::test_db_initialized[d2] - Failed: deliberately failing for demo purpose, Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras facilisis, massa in suscipit dignissim, mauris lacus molestie nisi, quis varius metus nulla ut ipsum.