Jak sprawić, aby pytest ignorował klasę o nazwie TestSomething? [duplikować]
Pracuję nad rodzajem platformy testowej, która ma klasy nazwane TestSomething
oczywiście. I zdałem sobie sprawę, że moje testy kończą się niepowodzeniem, ponieważ pytest widzi te klasy jako „coś, czego potrzebuję do utworzenia instancji i uruchomienia!” Zaraz po zaimportowaniu. I to absolutnie nie zadziała.
import pytest
from package import TestSomethingClass
Czy można zaimportować taką klasę bezpośrednio z pliku testowego pytest? A może powinienem pośrednio używać ich za pośrednictwem urządzenia?
Ten sam problem dotyczy wyjątków, ponieważ musiałbym zrobić coś takiego
with pytest.raises(TestsSomethingError):
Odpowiedzi
Wyraźnie wyłączone
Możesz zezwolić pytest na ignorowanie tej konkretnej klasy dzięki temu, że zaczyna się od słowa Test
, ustawiając __test__
flagę tak, aby False
znajdowała się w Twojej klasie będącej w konflikcie
class TestSomethingClass(object):
__test__ = False
def test_class_something(self, object):
pass
funkcja: https://github.com/pytest-dev/pytest/pull/1561
Plik konfiguracyjny
Moglibyśmy również całkowicie zmienić konwencję w twoim pytest.ini
pliku i zignorować wszystkie nazwy klas zaczynające się od słowa Example
. Ale nie radzę tego, ponieważ potencjalnie możemy spotkać się z niezamierzonymi konsekwencjami w dalszej drodze.
#pytest.ini file
[pytest]
python_classes = !Example
Najczęstsze konwencje
testowanie funkcji lub metod testowych z prefiksem poza klasą
testowanie funkcji lub metod testowych z prefiksem testowym wewnątrz klas testowych z prefiksem Test (bez metody inicjującej )
Źródło: https://docs.pytest.org/en/stable/customize.html