Wie kann pytest eine Klasse namens TestSomething ignorieren? [Duplikat]
Ich arbeite an einer Art Test-Framework, in dem TestSomething
natürlich Klassen benannt sind . Und ich stellte fest, dass meine Tests fehlschlagen, weil pytest diese Klassen als "etwas ansieht, das ich instanziieren und ausführen muss!", Sobald sie importiert wurden. Und das wird absolut nicht funktionieren.
import pytest
from package import TestSomethingClass
Ist es möglich, eine solche Klasse direkt aus einer Pytest-Testdatei zu importieren? Oder sollte ich diese indirekt über ein Gerät verwenden?
Das gleiche Problem gilt für Ausnahmen, da ich so etwas tun müsste
with pytest.raises(TestsSomethingError):
Antworten
Explizit deaktivieren
Sie können pytest erlauben, diese bestimmte Klasse zu ignorieren, indem sie mit dem Wort beginnt Test
, indem Sie das __test__
Flag auf False
innerhalb Ihrer widersprüchlichen Klasse setzen
class TestSomethingClass(object):
__test__ = False
def test_class_something(self, object):
pass
Merkmal: https://github.com/pytest-dev/pytest/pull/1561
Konfigurationsdatei
Wir könnten auch die Konvention in Ihrer pytest.ini
Datei vollständig ändern und alle Klassennamen ignorieren, die das Wort beginnen Example
. Ich rate jedoch nicht dazu, da wir möglicherweise später auf unbeabsichtigte Konsequenzen stoßen könnten.
#pytest.ini file
[pytest]
python_classes = !Example
Pytest-Konventionen
Testpräfix-Testfunktionen oder -methoden außerhalb der Klasse
Testpräfix-Testfunktionen oder -Methoden innerhalb von Testpräfix-Testklassen (ohne Init- Methode)
Quelle: https://docs.pytest.org/en/stable/customize.html