CI パイプライン¶
根拠¶
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.