2017-10-05 1 views
1

Est-il possible d'utiliser pytest.fixture sur setup_method afin que certaines opérations puissent toujours se terminer entre chaque testcase? J'ai essayé d'utiliser l'appareil comme suit et la structure semble ok. Je suis capable d'exécuter chaque testcase avant la fin de funcA. Cependant, je ne veux pas inclure @pytest.mark.usefixtures('funcA') avant chaque tesecase à la place je veux plus à setup_method. est-il possibleen utilisant pytest.fixture sur setup_method

class TestSuite(TestBase): 
    @classmethod 
    def setup_class(cls): 
     super(TestSuite, cls).setup_class() 
     'do something for steup class' 

    @classmethod 
    def teardown_class(cls): 
     super(TestSuite, cls).teardown_class() 
     'do something for teardown class' 


    def setup_method(self): 
     'do log in' 
     'do a,b c for setup_method' 

    @pytest.fixture(scope="function") 
    def funcA(self): 
     print('do function A') 

    @pytest.mark.usefixtures('funcA') 
    def test_caseA(self): 
     'check a' 

    @pytest.mark.usefixtures('funcA') 
    def test_caseB(self): 
     'check b' 

    @pytest.mark.usefixtures('funcA') 
    def test_caseC(self): 
     'check c' 

Répondre

1

Vous pouvez tout simplement passer l'appareil comme argument à l'épreuve:

def test_caseA(self, funcA): 
    'check a' 

def test_caseB(self, funcA): 
    'check b' 

def test_caseC(self, funcA): 
    'check c' 
+0

oui, mais je me demande si je peux l'utiliser dans setup_method parce FoncA est exécuté entre chaque TESTCASE – jacobcan118

+0

I supposez que vous n'avez pas besoin d'un appareil. Vous pouvez faire dans l'installation lui-même tout ce que vous essayez de faire avec luminaire. – Amit

+0

mais ma fonction funcA est en fait une fonction héritée d'une autre classe. donc je ne veux pas dupliquer le code dans setup_method mais simplement l'utiliser – jacobcan118