python: 单元测试—unit test
几个基本概念
TestCase(测试用例)
: 所有测试用例的基类,它是软件测试中最基本的组成单元。一个test case就是一个测试用例,包含了一个完整的测试流程的测试单元,可以对某一问题进行验证。
TestSuite(测试套件)
:多个测试用例test case的集合,TestSuite可以嵌套。
TestLoder
:将 TestCase加载到TestSuite的加载器。
TextTestRunner
:测试用例的执行器,其中的run(test)会执行TestSuite/TestCase中的run(result)方法。
TextTestResult
:测试结果会保存到TextTestResult实例中,包括运行了多少用例,成功与失败多少等信息
TestFixture
: 建立测试代码的运行环境,指测试准备前构建临时数据、目录等以及执行测试后要做的清理工作,主要包括包括setUp和tearDown方法
流程
1.写好TestCase:一个class继承unittest.TestCase,就是一个测试测试用例,其中有多个以test开头的方法,那么 每一个这样的,在load的时候会生成一个TestCase实例。如果一个class中有四个test开头的方法,最后load到suite中时则有四个测试用例
2.由TestLoder加载TestCase到TestSuite
3.然后由TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中。
说明:
a:通过命令行或者unittest.main()执行时,main会调用TextTestRunner中的run来执行,或者可以直接通过TextTestRunner来执行用例
b:Runner执行时,默认将结果输出到控制台,当然也可以定义其他的输出方式,如文件保存或者网页显示。
示例
- 首先要有待测试的类或者函数: foo_.py
# -*- encoding:utf-8 -*-
def foo_1():
#To do something
pass
def foo_2():
#To do something
pass
2.写测试用例: test_foo_.py
# -*- encoding: utf-8 -*-
import unittest
from foo_ import *
class TestFoo(unittest.TestCase):
"""Test foo functions"""
def setUp(self):
# do something before every test method
def test_foo_1(self):
"""test foo_1 function"""
#do something
def test_foo_2(self):
"""test foo_2 function"""
#do something
def tearUp(self):
# do something after every test method
Reference
[0] unittest — Unit testing framework
[1] Python单元测试框架——unittest
[2] Python单元测试——深入理解unittest