Come fare in modo che Pytest ignori una classe chiamata TestSomething? [duplicare]
Sto lavorando a una sorta di framework di test che TestSomething
ovviamente ha classi nominate . E mi sono reso conto che i miei test stanno fallendo perché pytest vede queste classi come "qualcosa che devo istanziare ed eseguire!", Non appena importate. E questo assolutamente non funzionerà.
import pytest
from package import TestSomethingClass
È possibile importare tale classe direttamente da un file di test pytest? O forse dovrei usare indirettamente quelli tramite un dispositivo?
Lo stesso problema si applica alle eccezioni, poiché avrei bisogno di fare qualcosa di simile
with pytest.raises(TestsSomethingError):
Risposte
Disabilita esplicitamente
Puoi consentire a pytest di ignorare questa classe specifica in virtù del fatto che inizia con la parola Test
, impostando la __test__
bandiera False
all'interno della tua classe in conflitto
class TestSomethingClass(object):
__test__ = False
def test_class_something(self, object):
pass
caratteristica: https://github.com/pytest-dev/pytest/pull/1561
File di configurazione
Potremmo anche cambiare completamente la convenzione nel tuo pytest.ini
file e ignorare tutti i nomi di classe che iniziano la parola Example
. Ma non lo consiglio, poiché potremmo potenzialmente incontrare conseguenze indesiderate lungo la strada.
#pytest.ini file
[pytest]
python_classes = !Example
Convenzioni Pytest
test funzioni di test prefissate o metodi esterni alla classe
test funzioni o metodi di test con prefisso all'interno di classi di test con prefisso Test (senza un metodo init )
Fonte: https://docs.pytest.org/en/stable/customize.html