Python单元测试方法
我可以在Python的测试类里面调用一个测试方法吗?比如说:
class Test(unittest.TestCase):
def setUp(self):
#do stuff
def test1(self):
self.test2()
def test2(self):
#do stuff
更新:我忘了问问题的另一半。setup或者teardown会在测试者调用的方法之后才被调用吗?还是说它会在test1开始和test1调用test2之间被调用?
5 个回答
1
所有名字以 'test'
开头的方法都被认为是单元测试(也就是说,当你调用 unittest.main()
时,这些方法会被执行)。所以你可以在 Test
类里面调用其他方法,但如果你不想让这个方法也被当作单元测试执行,就应该给它起个名字,不要以 'test'
开头。
8
这基本上就是一个不要这样做的建议。如果你想让测试按照特定的顺序运行,应该定义一个runTest
的方法,而不要把你的方法命名为test...
。
class Test_Some_Condition( unittest.TestCase ):
def setUp( self ):
...
def runTest( self ):
step1()
step2()
step3()
def tearDown( self ):
...
这样做会让步骤按顺序执行,并且只会有一次(1次)设置和一次(1次)清理。没有什么复杂的。
6
试着运行以下代码:
import unittest
class Test(unittest.TestCase):
def setUp(self):
print 'Setting Up'
def test1(self):
print 'In test1'
self.test2()
def test2(self):
print 'In test2'
def tearDown(self):
print 'Tearing Down'
if __name__ == '__main__':
unittest.main()
结果是:
Setting Up
In test1
In test2
Tearing Down
.Setting Up
In test2
Tearing Down
.
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
现在你可以看到,setUp
会在测试方法被 unittest 调用之前执行,而 tearDown
则是在调用之后执行。