??????????????????????Щ?????????????????????????????setUp?? ?????????hook method???С?????????????в?????????????????
????import unittest
????class SimpleWidgetTestCase(unittest.TestCase):
????def setUp(self):
????self.widget = Widget("The widget")
????class DefaultWidgetSizeTestCase(SimpleWidgetTestCase):
????def runTest(self):
????assert self.widget.size() == (50??50)?? 'incorrect default size'
????class WidgetResizeTestCase(SimpleWidgetTestCase):
????def runTest(self):
????self.widget.resize(100??150)
????assert self.widget.size() == (100??150)??
????'wrong size after resize'
???????setUp??????????????????????????????????????????? runTest??????С?
????????????????????????tearDown???????????runTest?????????????????
????import unittest
????class SimpleWidgetTestCase(unittest.TestCase):
????def setUp(self):
????self.widget = Widget("The widget")
????def tearDown(self):
????self.widget.dispose()
????self.widget = None
???????setUp??г???? ???????runTest???????tearDown????????????С?
????Such a working environment for the testing code is termed a fixture. ??????????????л???????????(fixture??????????????????????????????????)??
?????????????????????????????
???????С?????????????????????????????????????У????????SimpleWidgetTestCase??в???????????????????????? DefaultWidgetSizeTestCase?????????????????????????????JUnit????PyUnit??????????????????
????import unittest
????class WidgetTestCase(unittest.TestCase):
????def setUp(self):
????self.widget = Widget("The widget")
????def tearDown(self):
????self.widget.dispose()
????self.widget = None
????def testDefaultSize(self):
????assert self.widget.size() == (50??50)?? 'incorrect default size'
????def testResize(self):
????self.widget.resize(100??150)
????assert self.widget.size() == (100??150)??
????'wrong size after resize'
??????????????У??????????runTest????????????????????????????????????????????????self.widget??????????test?????? ?????????????????????????????????????????????????????????????????У?
????defaultSizeTestCase = WidgetTestCase("testDefaultSize")
????resizeTestCase = WidgetTestCase("testResize")
????????????????????????
????????????????????????????????????????????PyUnit?????????????????”???????“??test suite)??????unittest????е?TestSuite??????
????widgetTestSuite = unittest.TestSuite()
????widgetTestSuite.addTest(WidgetTestCase("testDefaultSize"))
????widgetTestSuite.addTest(WidgetTestCase("testResize"))
??????????????????????????????????????????????????????????????????????????????÷?????
????def suite():
????suite = unittest.TestSuite()
????suite.addTest(WidgetTestCase("testDefaultSize"))
????suite.addTest(WidgetTestCase("testResize"))
????return suite
??????????д??:
????class WidgetTestSuite(unittest.TestSuite):
????def __init__(self):
????unittest.TestSuite.__init__(self??map(WidgetTestCase??
????("testDefaultSize"??
????"testResize")))
????(????????????????????С???????)
??????????????????????????????????????TestCase???????????????????????unittest????????????????makeSuite???? ???????????????????????в???????????????????
????suite = unittest.makeSuite(WidgetTestCase??'test')
???????????????????makeSuite??????????????????????????????????????????????????Python???????cmp??????????????????
?????????????
?????????????????Щ??????????????????????????????????????????????TestSuite???????????????TestSuite????? ???TestCase????????TestSuite???????
????suite1 = module1.TheTestSuite()
????suite2 = module2.TheTestSuite()
????alltests = unittest.TestSuite((suite1?? suite2))
?????????????????е?“examples”???У?"alltests.py”??????????????????????
??????????????λ??
???????????????????????????????????????????У?????“widget.py”??????????????????????????????У???“widgettests.py”???????Щ?????
????????????????????е??????
???????????????????????????з???
???????????????????????????????????????????????????????
????????????????????????????????????
?????????????????????????????
???????C?????????????????????????飬??β????????????????
??????????????????????????????????
????????????в???
?????????д?????????????????????????????????????????????????????“TestRunner”????????в????????????????TestRunner??TextTestRunner?? ?????????????????в????????????
????runner = unittest.TextTestRunner()
????runner.run(widgetTestSuite)
????TextTestRunner????????????sys.stderr??????????????????????????????????????????????file-object??????????????????
??????????Python?????????????в???????????TextTestRunner???????????????
???????????????в???
????unittest?????????main?????????????????????????????????в????????main ???unittest.TestLoader?????????????????????????????
?????????????????????test*??????????????????????????????????′??????????????β??
????if __name__ == "__main__":
????unittest.main()
?????????????????????????????????????????????????в???????????С????“-h”?????????????????п??????
?????????????????????????????????unittest????????????У???????????е????????е??????????????????????????????
????% python unittest.py widgettests.WidgetTestSuite
????or
????% python unittest.py widgettests.makeWidgetTestSuite
????????????????????????????????????????С????????“listtests”????е?TestCase??????? 'ListTestCase'???μ???????????е?“examples”???????? ????????????????
????% python unittest.py listtests.ListTestCase.testAppend
????“testAppend”?????????????????е?????????????????????????′?????????ListTestCase????????????????????????“test*”?????????
????% python unittest.py listtests.ListTestCase
????????????洰?????в???
???????????????λ??????????????????????Tkinter??д?????????????????????????Python?????????????????????????JUnit??????????
?????????????????????????ò??????д????
????% python unittestgui.py
????or
????% python unittestgui.py widgettests.WidgetTestSuite
???????????????????????????????????????????????TestCase??TestSuite????????????????????????????????????????? ???????????????????????????′?????
???????????????????????Щ????????????????儷?????????????????????????????????????????????????
??????????д???
????????????????????TestRunner?????????????????????????????????????????е??????????????
?????????????????????????doc-string???????????????doc-string?????н?????????????????д???????????????????????
????class WidgetTestCase(unittest.TestCase):
????def testDefaultSize(self):
????"""Check that widgets are created with correct default size"""
????assert self.widget.size() == (50??50)?? 'incorrect default size'