CI Pipelines¶
Begründung¶
Das Ziel von Tests in einer CI-Pipeline ist anders als das Testen lokal. In der Tat können Sie schnell etwas Code bearbeiten und Ihre Tests auf Ihrem Computer erneut ausführen, aber dies ist mit einer CI-Pipeline nicht möglich. Sie laufen auf einem separaten Server und werden durch bestimmte Aktionen ausgelöst.
Aus dieser Beobachtung heraus kann pytest erkennen, wann es sich in einer CI-Umgebung befindet und einige seiner Verhaltensweisen anpassen.
Wie CI erkannt wird¶
Pytest weiß, dass es sich in einer CI-Umgebung befindet, wenn entweder eine dieser Umgebungsvariablen auf einen nicht-leeren Wert gesetzt ist
CI: wird von vielen CI-Systemen verwendet.BUILD_NUMBER: wird von Jenkins verwendet.
Auswirkungen auf CI¶
Für den Moment sind die Auswirkungen, in einer CI-Umgebung zu sein, auf pytest begrenzt.
Wenn eine CI-Umgebung erkannt wird, wird die Ausgabe der kurzen Testzusammenfassung nicht mehr auf die Terminalgröße gekürzt, d.h. die gesamte Meldung wird angezeigt.
# 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." )
Wenn dies lokal ausgeführt wird, ohne zusätzliche Optionen, wird ausgegeben
$ pytest test_ci.py ... ========================= short test summary info ========================== FAILED test_backends.py::test_db_initialized[d2] - Failed: deliberately f...
(Beachten Sie den gekürzten Text)
Während die Ausführung dies auf CI wird ausgegeben
$ 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.