2017-10-05 54 views
1

是否有可能在setup_method上使用pytest.fixture,因此某些操作可以始終在每個測試用例之間完成?我試圖使用像下面這樣的夾具,並且結構看起來像確定。我能夠在funcA完成之前執行每個測試用例。但是,我不想在每個tesecase之前包含@pytest.mark.usefixtures('funcA') ,而是希望更多地使用setup_method。是否有可能在setup_method上使用pytest.fixture

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' 

回答

1

您只需通過夾具作爲參數的測試:

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

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

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

是的,但我不知道是否可以只使用在setup_method因爲FuncA的是每間執行測試用例 – jacobcan118

+0

我猜你不需要夾具。你可以在安裝時自己做任何你想用夾具來做的事情。 – Amit

+0

但我的funcA實際上是一個從其他類繼承的函數。所以我不想在setup_method中複製代碼,只是使用它 – jacobcan118

相關問題