unittest是python单元测试框架,又叫作PyUnit。html
之因此称为框架是它代替开发人员完成了一些调用、IO等与单元测试无直接关系的支撑代码,让开发人员能够专一与测试用例的编写,简化单元测试工做。python
单元测试是一种基本的,由开发人员(而不是测试人员)完成的测试,保证一个程序基本单元的正确性。单元的概念我我的理解就相似电子设备中的元器件,一个个元器件(单元)组成了整个电子设备(程序)。而元器件的功能是单一的、肯定的,能够在电子设备未彻底成型(程序未彻底实现)以前对其正确性进行测试(即单元测试)。同时,这些元器件是独立的,能够方便的更换(高内聚,低耦合,能够任意重构)。因此单元测试是测试驱动开发、极限编程、敏捷中的重要概念。linux
一个简单的例子:编程
#FileName: ut_target.py class EqualToZero(Exception): pass class SplitZero(object): def splitzero(self, num): if num > 0: return "num is bigger than zero" elif num < 0: return "num is smaller than zero" else: raise EqualToZero
#FileName: utest.py from ut_target import SplitZero, EqualToZero import unittest class SzTestCase(unittest.TestCase): def setUp(self): print "test start" def tearDown(self): print "test stop" def testSzBig(self): num = 10 sz = SplitZero() self.assertEqual(sz.splitzero(num), "num is bigger than zero") def testSzSmall(self): num = -10 sz = SplitZero() self.assertEqual(sz.splitzero(num), "num is smaller than zero") def testSzEqual(self): num = 0 sz = SplitZero() self.assertRaises(EqualToZero, sz.splitzero, num) if __name__ == "__main__": unittest.main()
执行python utest.py -vbash
testSzBig (__main__.SzTestCase) ... test start test stop ok testSzEqual (__main__.SzTestCase) ... test start test stop ok testSzSmall (__main__.SzTestCase) ... test start test stop ok ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK
unittest基本使用方法框架
1.import unittestide
2.定义一个继承自unittest.TestCase的测试用例类单元测试
3.定义setUp和tearDown,在每一个测试用例先后作一些辅助工做。测试
4.定义测试用例,名字以test开头。htm
5.一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。
6.调用unittest.main()启动测试
7.若是测试未经过,会输出相应的错误提示。若是测试所有经过则不显示任何东西,这时能够添加-v参数显示详细信息。
参考
[1]http://docs.python.org/release/2.6.8/library/unittest.html
[2]http://www.ibm.com/developerworks/cn/linux/l-pyunit/index.html