PyUnit tearDown和setUp vs __init__和__del__

Der*_*itz 17 python unit-testing

是否有使用拆卸和安装与之间的差异__init____del__使用的PyUnit测试框架的时候?如果是这样,它究竟是什么,首选使用方法是什么?

unu*_*tbu 26

setUp在每次测试之前调用,并tearDown在每次测试后调用. __init__当类实例被调用一次-但因为一个新 TestCase创建的实例为每个单独的测试方法,__init__也叫每个测试一次.

您通常不需要定义__init____del__在编写单元测试时,尽管您可以使用它__init__来定义许多测试使用的常量.


此代码显示调用方法的顺序:

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)
Run Code Online (Sandbox Code Playgroud)

版画

__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
Run Code Online (Sandbox Code Playgroud)