import unittest
from Widget import Widget
# 执行测试的类
# 让所有执行测试的类都继承于 TestCase 类,可以将 TestCase 看成是对特定类进行测试的方法的集合
class WidgetTestCase(unittest.TestCase):
# setUp()方法中进行测试前的初始化工作
def setUp(self):
self.widget = Widget()
# 测试 getSize()方法的测试用例
def testSize(self):
# assertEqual()也是 TestCase 类中定义的方法。对 Widget 类中 getSize()方法的返回值和预期值进行比较
self.assertEqual(self.widget.getSize(), (40, 40))
# 测试 resize()方法的测试用例
def testResize(self):
self.widget.resize(100, 100)
self.assertEqual(self.widget.getSize(), (100, 100))
# tearDown()方法中执行测试后的清除工作,setUp()和 tearDown()都是 TestCase 类中定义的方法
def tearDown(self):
self.widget.dispose()
self.widget = None
# 构造测试集
def suite():
# TestSuite 看成是包含所有TestCase 类测试用例的一个容器
suite = unittest.TestSuite()
suite.addTest(WidgetTestCase("testSize"))
suite.addTest(WidgetTestCase("testResize"))
return suite
# 测试
if __name__ == "__main__":
unittest.main(defaultTest='suite')
如果用于测试的类中所有的测试方法都以 test 开头,甚至可以用 PyUnit 模块提供的makeSuite()方法来构造一个。
def suite():
return unittest.makeSuite(WidgetTestCase, "test")
Widget.py被测试类
class Widget:
# __init__()方法在类的一个对象被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的初始化。
def __init__(self, size=(40, 40)):
# _size是私有变量
self._size = size
def getSize(self): # 获取类中的私有变量
return self._size
def resize(self, width, height):
if width < 0 or height < 0:
raise ValueError("illegal size")
self._size = (width, height)
def dispose(self):
pass