根据 ‘C语言中文网’ 该链接下的文章学习整理,点击此处即可访问。本文对此进行了提炼精简并做了适当的修改,如有侵权请私信我删除。
PyUnit(unittest)是 Python 自带的单元测试框架,用于编写和运行可重复的测试。PyUnit 是 xUnit 体系的一个成员,xUnit 是众多测试框架的总称,PyUnit 主要用于进行白盒测试和回归测试。
PyUnit具有以下的好处及特征:
---------------------------------------------好处---------------------------------------------------------
- 通过PyUnit可以让测试具有持久性,测试和开发同步进行,测试代码和开发代码一同发布;
- 可以使测试代码和产品代码分离;
- 针对某一个类的测试代码只需要进行较少的改动,便可以应用于另一个类的测试;
- PyUnit 开放源代码,可以进行二次开发,方便对 PyUnit 的扩展。
---------------------------------------------特征---------------------------------------------------------
- 使用断言方法判断期望值和实际值的差异,返回 bool 值;
- 测试驱动设备可使用共同的初始化变量或实例;
- 测试包括结构便于组织和集成运行。
所有测试的本质其实都是一样的,都是通过给定参数执行函数,然后判断函数的实际输出结果和期望结果是否一致。
PyUnit 测试与其他 xUnit 的套路一样,基于断言机制来判断函数或方法输出结果和期望输出结果是否一致,测试用例提供参数来执行函数或方法,获取它们的执行结果,然后使用断言方法来判断该函数的或方法的输出结果与期望输出结果是否一致,如果一致则说明测试通过;如果不一致则说明测试不通过。
目前流行一种开发方式叫做 测试驱动开发,这种方式强调先编写测试用例,然后再编写函数和方法,即先给出开发标准,按着标准去开发。假如程序要开发满足 A 功能的 fun_a() 函数,采用测试驱动开发的步骤如下:
- 为 fun_a() 函数编写测试用例,根据业务要求使用大量不同的参数组合执行 fun_a() 函数,并断言该函数的执行结果与业务期望的执行结果匹配;
- 编写、修改 fun_a() 函数;
- 运行 fun_a() 函数的测试用例,如果测试用例不能完全通过;则重复第 2 步和第 3 步,直到 fun_a() 的所有测试用例全部通过。
一、PyUnit 的用法
以下的 python_unittest_function.py 模块作为被测试的程序。
# python_unittest_function.py
def one_equation(a, b):
'''
求方程 a * x + b = 0 的解
参数 a ----- 方程中变量的系数
参数 b ----- 方程中的常量
返回方程的解
:param a:
:param b:
:return:
'''
if a == 0:
raise ValueError('参数错误')
else:
return b / a
def two_equation(a, b, c):
'''
求方程 a * x * x + b * x + c = 0的解
参数 a ----- 方程中变量二次幂的系数
参数 b ----- 方程中变量的系数
参数 c ----- 方程中的常量
:param a:
:param b:
:param c:
:return:
'''
if a == 0:
raise ValueError('参数错误')
elif b * b -