我可以在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之后被调用吗?
答案 0 :(得分:8)
这几乎是不要那样做。如果您希望按特定顺序运行测试,请定义runTest
方法,不要将方法命名为test...
。
class Test_Some_Condition( unittest.TestCase ):
def setUp( self ):
...
def runTest( self ):
step1()
step2()
step3()
def tearDown( self ):
...
这将使用一(1)个setUp和一(1)个tearDown按顺序运行这些步骤。没有神秘感。
答案 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
在测试方法被单元测试调用之前被调用,并且在调用后调用tearDown
。
答案 2 :(得分:1)
名称以字符串'test'
开头的所有方法都被视为单元测试(即,当您调用unittest.main()
时,它们会运行)。因此,您可以在Test
类中调用方法,但是您应该将其命名为不以字符串'test'
开头的内容,除非您希望它也作为单元测试运行。
答案 3 :(得分:0)
确定,为什么不 - 但是这意味着test2将被调用两次 - 一次由test1调用,然后再次作为自己的测试,因为所有名为test的函数都将被调用。
答案 4 :(得分:0)
两者都是:
setUp
test2
将被调用两次。 如果您想在测试中调用函数,请省略test
前缀。