unittest是python的
单元测试框架,如下:
*被测文件
class myclass:
def __init__(self):
pass
def divid(self, x, y):
return x/y
*test.py
?^Yfy%UR$G U H#k4j0
import unittest
import myclass
B [G$V0R(zSJ0
class dividtest(unittest.testcase):
#用例名必须是test开始
def testDivid(self):
self.assert_(myclasss.divid(4,2)==2,"pass")
#self.assertEqual()
if __name__=="__main__"":
unittest.main()
T%E6D8x t7k0
或者:
testsuit=unittest.testsuit()
testsuit.addTest(dividtest("testDivid"))
runner = unittest.TextTestRunner()
runner.run(testsuit)
?@/R3kp3O:W:[-h&D0
suite = unittest.makeSuite(WidgetTestCase,prefix='test')
\ l}!q/Y N'~"g,pf{0
查找startdir路径下,包括子文件夹下所有test*.py的测试用例
unittest.defaultTestLoader.discover(startdir='//.',pattern='test*.py', top_level_dir=None)
$mEKRHMx5R*^0
例:使用loadfromtestModule(测试模块),获取某路径下所有符合要求的测试脚本,并执行
import unittest
import os
import sys
import re
51Testing软件测试网[0Mc3KoT
def testlist():
testsuit=unittest.testsuit()
#当前路径的绝对路径
path=os.path.abspath(".")
#返回路径下所有文件列表
files=os.listdir(path)
#使用正则表达式匹配以test.py结尾的文件
test=re.compile(r'test.py$',re.INGORECASE)
files=(test.searching,files)
for file in files:
#获取文件名,不含扩展名
filename=file.splittext(file)[0]
modules=__import__(filename)
#加载所有测试脚本
tests=unittest.defaultTestLoader.loadfromtestModule(modules)
#将测试用例加入到测试套件
testsuit.addtest(tests)
return testsuit
51Testing软件测试网,~^k%yD0y;E Gs
testsuit=testlist()
runner = unittest.TextTestRunner()
runner.run(testsuit)
8k `)L9HZR8nhF0
断言:
self.assert_(a=b,'是否相等')
assertEqual()
failif('a>b')
或者直接失败;self.fail("errsmsg")
测试异常:如果异常出现,则测试通过
try:
myclasss.divid(4,0)
except ZeroDivisionError:
pass
else:
fail("expected a ZeroDivisionError")
或者这样写
self.assertRaises(ZeroDivisionError, myclasss.divid, 4, 0)
.yMHW%e(}`t
J ?0