python unittest方法

Fal*_*rri 7 python unit-testing

我可以在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之后调用吗?

S.L*_*ott 8

这几乎不是那样做的.如果希望以特定顺序运行测试,请定义runTest方法,不要为方法命名test....

class Test_Some_Condition( unittest.TestCase ):
def setUp( self ):
    ...
def runTest( self ):
    step1()
    step2()
    step3()
def tearDown( self ):
    ...
Run Code Online (Sandbox Code Playgroud)

这将使用一(1)个setUp和一(1)个tearDown按顺序运行这些步骤.没有神秘感.


sat*_*oru 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()
Run Code Online (Sandbox Code Playgroud)

结果是:

Setting Up
In test1
In test2
Tearing Down
.Setting Up
In test2
Tearing Down
.
----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK
Run Code Online (Sandbox Code Playgroud)

现在你看,setUp被调用之前的测试方法被调用的单元测试,以及tearDown在呼叫后调用.