简体   繁体   中英

PyUnit tearDown and setUp vs __init__ and __del__

Is there a difference between using tearDown and setUp versus __init__ and __del__ when using the pyUnit testing framework? If so, what is it exactly and what is the preferred method of use?

setUp is called before every test, and tearDown is called after every test. __init__ is called once when the class is instantiated -- but since a new TestCase instance is created for each individual test method , __init__ is also called once per test.

You generally do not need to define __init__ or __del__ when writing unit tests, though you could use __init__ to define a constant used by many tests.


This code shows the order in which the methods are called:

import unittest
import sys

class TestTest(unittest.TestCase):

    def __init__(self, methodName='runTest'):
        # A new TestTest instance is created for each test method
        # Thus, __init__ is called once for each test method
        super(TestTest, self).__init__(methodName)
        print('__init__')

    def setUp(self):
        #
        # setUp is called once before each test
        #
        print('setUp')

    def tearDown(self):
        #
        # tearDown is called once after each test
        #
        print('tearDown')

    def test_A(self):
        print('test_A')

    def test_B(self):
        print('test_B')

    def test_C(self):
        print('test_C')



if __name__ == '__main__':
    sys.argv.insert(1, '--verbose')
    unittest.main(argv=sys.argv)

prints

__init__
__init__
__init__
test_A (__main__.TestTest) ... setUp
test_A
tearDown
ok
test_B (__main__.TestTest) ... setUp
test_B
tearDown
ok
test_C (__main__.TestTest) ... setUp
test_C
tearDown
ok

----------------------------------------------------------------------
Ran 3 tests in 0.000s

OK

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM