CI 管線¶
基本原理¶
在 CI 管線中測試的目標與在本機測試不同。實際上,您可以快速編輯一些程式碼並在您的電腦上再次執行測試,但在 CI 管線中這是不可能的。它們在單獨的伺服器上執行,並由特定動作觸發。
從這個觀察來看,pytest 可以偵測到它何時在 CI 環境中,並調整它的一些行為。
如何偵測 CI¶
當設定了以下任一環境變數時,無論其值為何,Pytest 都會知道它在 CI 環境中
CI
:許多 CI 系統使用。BUILD_NUMBER
:Jenkins 使用。
對 CI 的影響¶
目前,在 CI 環境中對 pytest 的影響是有限的。
當偵測到 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.