2017-10-08 1 views
1

J'ai essayé d'évaluer le code ci-dessous, mais la méthode de montage 'newFix' n'a même pas été évaluée, donc la console n'a pas imprimé 'Ceci est exécuté' quand j'ai essayé la commande ci-dessousLa fixation Pytest à l'intérieur d'une classe n'est pas exécutée

pytest -v --capture = pas

Mais les deux et Test2 retourné Test1 passe. Il est supposé imprimer 'Ceci est exécuté' avant chaque test. Mais si j'enlève la ligne de classe, et rend les fonctions générales, alors la méthode fixture 'newFix' est exécutée. Une idée de pourquoi elle n'est pas exécutée dans une classe? S'il vous plaît donnez votre avis.

import pytest 

class TestClass: 

    @pytest.fixture() 
    def newFix(): 
     print('This is executed') 

    def test_Test1(newFix): 
     assert True 

    def test_Test2(newFix): 
     assert True 
+0

Jetez un oeil à la documentation https://docs.pytest.org/en/latest/fixture.html # using-fixtures-from-classes-modules-ou-projets – slackmart

Répondre

1

Les tests sont des méthodes non statiques, elles doivent donc être définis comme

def test_Test1(self, newFix): 
    # Unit test here