unittest可以编写结构化的大型且周详的测试集。例如:
import unittest,my_math
class ProductTestCase(unittest.TestCase):
def testIntegers(self):
for x in
xrange(-10,
10):
for y in
xrange(-10,
10):
p = my_math.product(x, y)
self.failUnless(p == x*y,'wrong')
def testFloats(self):
for x in
xrange(-10,
10):
for y in
xrange(-10,
10):
x = x/10
y = y/10
p = my_math.product(x, y)
self.failUnless(p == x*y,
'error')
def setUp(self):
print('begin')
def tearDown(self):
print('end')
if __name__ == '__main__':
unittest.main()
#my_math.py
def product(x, y):
return x*y
# pass
Unittest.main函数负责实际运行测试。它会实例化所有TestCase的子类,运行所有名字以test开头的方法。另外,如果定义了叫做setUp和tearDown的方法,它们就会在运行每个测试方法之前和之后执行,这样就可以用这些方法为所有的测试提供一般的初始化和清理代码。
如果product方法中内容改为pass,则会出现一下提示:D:\Python2.7.8\python.exe "D:\Program Files\JetBrains\PyCharm 4.0.4\helpers\pycharm\utrunner.py" D:\Ainy\PythonTest\P1\T1.py::ProductTestCase::testFloats true
Testing started at 21:32 ...
begin
Failure
Traceback (most recent call last):
File "D:\Ainy\PythonTest\P1\T1.py", line 454, in testFloats
self.failUnless(p == x*y, 'error')
AssertionError: error
end
Process finished with exit code 0