在setup_method上使用pytest.fixture

时间:2017-10-05 18:16:19

标签: python python-3.x unit-testing pytest pytest-benchmark

是否可以在setup_method上使用pytest.fixture,以便在每个测试用例之间总是可以完成一些操作?我试过使用像下面这样的夹具,结构看起来很好。我可以在funcA完成之前执行每个测试用例。但是,我不希望在每个tesecase之前包含@pytest.mark.usefixtures('funcA') ,而是我想更多地使用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'

1 个答案:

答案 0 :(得分:1)

您可以将灯具作为参数传递给测试:

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

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

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