???????
????Python??????????The Python unit testing framework????????PyUnit?? ??Kent Beck??Erich Gamma????λ?????????????? JUnit ??Python?汾?? ??JUnit????Kent????Smalltalk???????Java?汾??????????????????????????
??????????????????Python????????PyUnit?????????á????赥????????????????? ??????????Kent????????"Simple Smalltalk Testing: With Patterns"??
??????? Python 2.1 ?汾??PyUnit??? Python????????????
???????????????????????Python???????Python ????????????????????????
?????????
????PyUnit??????Python 1.5.2??????汾?????С?
?????????????Linux??Redhat 6.0??6.1???Debian Potato????Python 1.5.2?? 2.0??2.1???PyUnit ??????????????PyUnit??????????????????????????????Windows??Mac????????? ?κ???????Python?汾???????鷳?????????????
?????????????JPython??Jython?????PyUnit??????????? ??JPython??Jython?????PyUnit?????
???????PyUnit????????????
???????
??????д????????????????“unittest”?????????????????Python 2.1?????汾???? ??????????????????????汾??Python?????????????PyUnit?????л?????顣
?????????????????????????????????????????????“unittest.py”??????? ?????Python????·???С????????????????????“$PYTHONPATH”??????? ?????Python????·???е????????У???????Redhat Linux???е? /usr/lib/python1.5/site-packages????
????????????????????????????PyUnit??????????????????“unittest.py”????? ????????
????????????????
????????????????Щ??????????Test Cases??????????????????????????????????????? ?????????????PyUnit?У?unittest????е?TestCase ??????????????
????TestCase?????????????????в???????????????? ??set-up??????????tidy-up??????????
????TestCase????????????????????????????????? ??????????л??????????????????????????????С?
?????????????????????
???????????runTest??????????????????????????????? ?Щ???????
????import unittest
????class DefaultWidgetSizeTestCase(unittest.TestCase):
????def runTest(self):
????widget = Widget("The widget")
????assert widget.size() == (50??50)?? 'incorrect default size'
???????????в????????????????Python?????“assert”??????????????? ??????????assertion??????AssertionError????????????? ????????????????????????????“assert”?????????????????????????“errors”?? ???μ?"??????????????"??
???????в???????????????????????????????????????????????????????constructor?? ????????????????????????
????testCase = DefaultWidgetSizeTestCase()
??????????????????????
???????????????????????????????????????????????????????????????????????У? ??????100??Widget???????????????????ж????????“Widget”?????????????????