待测试的类(Widget.py)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
# Widget.py # Python 2.7.6 class Widget: def __init__( self , size = ( 40 , 40 )): self .size = size def getSize( self ): return self .size def reSize( self ,width,height): if width < 0 or height < 0 : raise ValueError, 'illegal size' else : self .size = (width,height) return self .size def dispose( self ): pass |
测试类(Auto.py)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# coding=utf8 # Auto.dy # Python 2.7.6 from Widget import Widget #导入测试类模块Widget class WidgetTestCase(unittest.TestCase): #让所有执行测试的类都继承于TestCase类,可以将TestCase看成是对特定类进行测试的方法的集合 #在setUp()方法中进行测试前的初始化工作。 def setUp( self ): self .widget = Widget() #并在tearDown()方法中执行测试后的清除工作,setUp()和tearDown()都是TestCase类中定义的方法。 def tearDown( self ): self .widget = None #测试Widget类中getSize方法 def testgetSize( self ): print "Test GetSize" #对Widget类中getSize()方法的返回值和预期值进行比较,确保两者是相等的, #assertEqual()也是TestCase类中定义的方法。 self .assertEqual( self .widget.getSize(), ( 40 , 40 )) #测试Widget类中reSize方法 def testreSize( self ): print "Test Resize" #对Widget类中reSize()方法的返回值和预期值进行比较,确保两者是相等的。 #assertEqual()也是TestCase类中定义的方法。 self .assertEqual( self .widget.reSize( 50 , 100 ),( 50 , 100 )) #提供名为suite()的全局方法,PyUnit在执行测试的过程调用suit()方法来确定有多少个测试用例需要被执行, #可以将TestSuite看成是包含所有测试用例的一个容器。 def suite(): suite = unittest.TestSuite() suite.addTest(WidgetTestCase( "testgetSize" )) #往此添加需要测试的方法testgetSize() suite.addTest(WidgetTestCase( "testreSize" )) #往此添加需要测试的方法testreSize() return suite if __name__ = = "__main__" : unittest.main(defaultTest = 'suite' ) #在主函数中调用全局方法. |
测试结果:
1
2
3
4
5
6
7
8
|
D:\Python>python27 Auto.py Test GetSize .Test Resize . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Ran 2 tests in 0.004s OK |
总结:
1。第一步:先写好测试类
2。第二步:导入unittest模块及测试的类,运用setup()方法做测试前的准备工作,如建立数据库连接,运用teardown()方法做测试后的清除工作,如取消数据库的链接,再对类中的方法逐一做测试。
3。第三步: 写suite()的全局方法,将要测试的方法,一一加入。
测试结果,有几个测试用例就有几个. 最后显示OK,表示通过。