Comment faire en sorte que pytest ignore une classe nommée TestSomething? [dupliquer]
Je travaille sur une sorte de framework de test qui a des classes nommées TestSomething
bien sûr. Et j'ai réalisé que mes tests échouaient parce que pytest voit ces classes comme "quelque chose dont je dois instancier et exécuter!", Dès l'importation. Et cela ne fonctionnera absolument pas.
import pytest
from package import TestSomethingClass
Est-il possible d'importer une telle classe directement à partir d'un fichier de test pytest? Ou devrais-je les utiliser indirectement via un appareil?
Le même problème s'applique aux exceptions, car je devrais faire quelque chose comme
with pytest.raises(TestsSomethingError):
Réponses
Désactiver explicitement
Vous pouvez autoriser pytest à ignorer cette classe spécifique en commençant par le mot Test
, en définissant l' __test__
indicateur False
dans votre classe en conflit
class TestSomethingClass(object):
__test__ = False
def test_class_something(self, object):
pass
fonctionnalité: https://github.com/pytest-dev/pytest/pull/1561
Fichier de configuration
Nous pourrions également changer complètement la convention dans votre pytest.ini
fichier et ignorer tous les noms de classe qui commencent le mot Example
. Mais je ne conseille pas cela, car nous pourrions potentiellement rencontrer des conséquences imprévues sur la route.
#pytest.ini file
[pytest]
python_classes = !Example
Conventions Pytest
tester les fonctions ou méthodes de test préfixées en dehors de la classe
tester les fonctions ou méthodes de test préfixées dans les classes de test préfixées Test (sans méthode init )
La source: https://docs.pytest.org/en/stable/customize.html