Je travaille avec une base de code qui est principalement écrite avec unittest. Les tests sont exécutés avec pytest. J'essaie de simplifier les tests en paramétrant certains d'entre eux. Pour atteindre cet objectif, j'essaie d'apprendre à utiliser les appareils de pytest et de refactoriser certains des tests basés sur l'unittest. Les tests actuels ont un appareil mondial conftest.py:Enchaînement multiple pytest/unittest hybride
@pytest.fixture(autouse=True)
def register_cleanup():
yield True
print("cleaning up database")
Maintenant, je veux ajouter un appareil qui est spécifique à un de mes modules de test, quelque chose le long des lignes de
@pytest.fixture()
def foo_fixture():
print("setup fixture")
yield
print("tear down fixture")
class Foo(unittest.TestCase):
def setUp(self):
print('unittest setUp()')
def test(self):
print('test')
Cependant, les instructions print()
dans ce module ne s'exécutent jamais. En tant qu'étape intermédiaire, je garde la structure basée sur l'unittest et j'y ajoute. Est-il possible de faire fonctionner ce que je veux ou dois-je abandonner tout à fait unittest et aller directement à pytest.
Où voudriez-vous attendre cet appareil à utiliser? Voulez-vous activer 'autouse = True' ici aussi? En général, les fixtures ne sont exécutées que lorsqu'elles sont un paramètre du test, et sont moins des mécanismes génériques de nettoyage que des hypothèses scopées – Cireo
@Cireo Voulez-vous dire que je devrais ajouter 'autouse = True' à' foo_fixture() 'comme' register_cleanup() '? –
@Cireo N'hésitez pas à poster ceci comme réponse. –