介绍python的单元测试框架,简称PyUnit
1、安装pyunit
pip install unittest
2、测试用例介绍
import unittest
class WidgetTestCase(unittest.TestCase):
def setUp(self):
self.widget = Widget("The widget")
def tearDown(self):
self.widget.dispose()
self.widget = None
def testDefaultSize(self):
assert self.widget.size() == (50,50), 'incorrect default size'
def testResize(self):
self.widget.resize(100,150)
assert self.widget.size() == (100,150), \
'wrong size after resize'
代表测试类继承WidgetTestCase,函数setUp为每次执行测试用例前执行,函数tearDown为每次执行测试用例后执行。测试用例开头需要前缀 test。
3、使用测试套件
可将多个测试用例整合为一个测试套件,并返回测试套件
def suite():
suite = unittest.TestSuite()
suite.addTest(WidgetTestCase("testDefaultSize"))
suite.addTest(WidgetTestCase("testResize"))
return suite
4、嵌套测试套件
suite1 = module1.TheTestSuite()
suite2 = module2.TheTestSuite()
alltests = unittest.TestSuite((suite1, suite2))
5、测试断言
测试断言来判断测试结果是否符合预期。
TestCase包含一对方法assertEqual和assertNotEqual用于此目的(也可以使用别名:failUnlessEqual 和 failIfEqual):
def testSomething(self):
self.widget.resize(100,100)
self.assertEqual(self.widget.size, (100,100))
6、测试异常
测试经常希望检查在某个环境中是否出现异常。如果期待的异常没有抛出,测试将失败。这很容易做到:
def runTest(self):
try:
self.widget.resize(-1,-1)
except ValueError:
pass
else:
fail("expected a ValueError")
通常,预期异常源(译者注:将抛出异常的代码)是一个可调用对象;为此,TestCase有一个assertRaises方法。此方法的前两个参数是应该出现在“except”语句中的异常和可调用对象。剩余的参数是应该传递给可调用对象的参数。
def runTest(self):
self.assertRaises(ValueError, self.widget.resize, -1, -1)