什么是单元测试?
单元测试负责最小的软件测试单元(模块)进行验证,它使用软件设计文档中对模块的描述作为指南,对重要的程序分支进行测试以发现模块中的错误。
python拥有诸多单元测试框架,如doctest、unittest、pytest、nose等,其中最常用就是python自带的unittest框架(也被称为PyUnit框架),Python2.1及其以后的版本已将unittest作为标准模块放入python开发中。
基本框架代码如下
import unittest class Test(unittest.TestCase): def setUp(self): print(‘hello‘) def tearDown(self): print(‘bye‘) def test_001(self): print(‘001‘) def test_002(self): print(‘002‘) def test_003(self): print(‘003‘) def func(self): print(‘func‘) if __name__ == ‘__main__‘: unittest.main()
1.引入unittest模块,创建一个类A继承unittest的TestCase类,我们可以将A类看成是对待特定类的测试的集合
2.setup() 方法用于测试用例执行前的初始化工作
3.teardown() 方法用于测试用例执行之后的善后工作
4.unittest提供了全局main()方法,使用它可以方便地将一个单元测试模块变成可以直接运行的测试脚本
5.main()方法使用TestLoader类来搜索所有包含在模块以”test”命名开头的测试方法,并自动执行它们
四个基本概念
1.Test Fixture
测试用例环境的搭建和销毁,就是一个fixture,通过setUp()方法来实现数据的初始化建立以及环境准备,通过tearDown()方法清除数据结束测试。
2.TestCase
一个TestCase的实例就是一个测试用例,测试用例就是一个完整的测试流程,包括测试前的准备环境搭建,包括测试前的准备环境搭建(setUp)、实现测试过程的代码(run),以及测试以后环境的还原(tearDown)。
3.Test Suite
一个功能的验证是需要多个测试用例,可把多个测试用例集合起来执行,这就产生了测试套件TestSuite的概念,Test Suite用来组装单个测试用例,可以通过addTest加载TestCase到TestSuite中,从而返回一个TestSuite实例
4.Test Runner
在unittest单元测试框架中,通过TestTextRunner类提供的run()方法来执行测试用例。