Immer wieder habe ich mich, beim Versuch einen fehlgeschlagenen Test in PyCharm zu debuggen, gewundert wieso meine Haltepunkte misachtet werden.
Um dies zu vermeiden führe ich pytest
in PyCharm inzwischen immer mit der Option --no-cov
aus.
Das Plugin pytest-cov
hilft einem wunderbar dabei einen Überblick über die Testabdeckung zu behalten. Um es nicht immer explizit aktivieren zu müssen bietet es sich an dieses über einen passenden Eintrag in der pytest.ini
zu tun.
[pytest]
addopts = --cov=example
In PyCharm hat das Plugin allerdings nur einen geringen Mehrwert, denn dort achte ich eigentlich weniger auf Ausgabe von PyTest, denn ich bekomme ich ja grafisch angezeigt wenn Tests fehlschlagen. Möchte ich mir die Testabdeckung ansehen, so bietet mir PyCharm eine eigene Möglichkeit diese einzusammeln, samt passender Visualisierung.
Dafür kollidiert pytest-cov
aber mit dem Debugger von PyCharm.
Denn beide registrieren sich per sys.settrace
um allen ausgeführten Code inspizieren zu können.
Nutzt man pytest-cov
innerhalb des Debuggers, überschreibt es dessen dort hinterlegte Funktion. Damit hat der Debugger dann nicht mehr die Möglichkeit in die Ausührung einzugreifen.
Um dies zu vermeiden muss man pytest-cov
durch die Option --no-cov
deaktiveren.
Damit fehlt dann zwar auch die Information zur Testabdeckung, aber dafür hat PyCharm ja, wie gesagt, seine eigene Funktionalität.