单元测试可以提供以下功能:1、提供用例组织和执行;2、提供丰富的断言方法;3、提供丰富的日志。
python中有多种单元测试框架,如doctest、unittest、pytest、nose等,这边我写的是unittest。
unittest编写测试用例,有以下几点需要遵从的:
(1)、创建一个测试类,例TestSelect类,必须要继承unittest模块的TestCase类
(2)、创建测试方法,该方法必须以"test"开头
有几点重要的概念需要了解的,TestCase、TestSuite、TestRunner和TestFixture
TestCase是最小的测试单元,是测试类的基类
TestSuite 测试套件是测试用例、测试套件或两者的集合
TestRunner是一个组件,用于协调测试的执行并向用户提供结果。
TestFixture代表执行一个或多个测试所需的环境准备,以及关联的清理动作。
例子如下:
import unittest
from calculator import Calculator
class TestCalculator(unittest.TestCase):
#测试用例前置动作
def setUp(self):
print("test start:")
#测试用例后置动作
def tearDown(self):
print("test end")
def test_add(self):
c = Calculator(3,5)
result=c.add()
self.asserEqual(result,8)
if __name__ == '__main__':
#创建测试套件
suit = unittest.TestSuite()
suit.addTest(TestCalculator("test_add")
#创建测试运行器
runner=unittest.TextTestRunner()
runner.run(suit)