pytest学习:setup、teardown、setup_class、teardown_class的区别

记录pytest 与 unittest内的前后置函数操作区别

pytest示例

setup_class:单个测试类开始前执行1次
setup:每个测试函数执行前执行1次
teardown:每个测试函数执行结束后执行1次
teardown_class:单个测试类结束前执行1次

可拆开任意组合使用,若都同时使用, 则执行顺序如下
执行顺序:setup_class ==> (setup ==> teardown) * n ==>teardown_class

import pytest

class TestCase:

    # 每个测试函数执行前执行1次
    def setup(self):
        print("__setup__")

    # 每个测试函数执行结束后执行1次
    def teardown(self):
        print("__teardown__")

    # 单个测试类开始前执行1次
    def setup_class(self):
        print("__setup_class__")

    # 单个测试类结束前执行1次
    def teardown_class(self):
        print("__teardown_class__")

    def test_1(self):
        print('a')

    def test_2(self):
        print('b')


if __name__ == '__main__':
    pytest.main()

执行结果

__setup_class__

__setup__
PASSED                                      [ 50%]a
__teardown__

__setup__
PASSED                                      [100%]b
__teardown__

__teardown_class__

unittest示例

setUp:每个测试函数执行前执行1次
tearDown:每个测试函数执行结束后执行1次
setUpClass:单个测试类开始前执行1次
tearDownClass:单个测试类结束前执行1次

import unittest


class TestDemo(unittest.TestCase):

    def setUp(self):
        print("__setUp__")

    def tearDown(self):
        print("__tearDown__")

    @classmethod
    def setUpClass(cls):
        print("__setUpClass__")

    @classmethod
    def tearDownClass(cls):
        print("__tearDownClass__")

    def test_1(self):
        print("a")

    def test_2(self):
        print("b")


if __name__ == '__main__':
    # suite = unittest.TestSuite()
    # suite.addTests([TestDemo("test_1")])
    # suite.addTests([TestDemo("test_2")])
    # runner = unittest.TextTestRunner()
    # runner.run(suite)
    unittest.main()

执行结果

__setUpClass__
__setUp__
a
__tearDown__
__setUp__
b
__tearDown__
__tearDownClass__

你可能感兴趣的:(Pytest,pytest,unittest)