Python单元测试工具doctest和unittest使用解析
本文详细解析Python标准库中的两个核心测试工具:doctest和unittest。通过具体代码示例,演示如何利用doctest在文档字符串中嵌入测试用例,以及如何构建通用的unittest测试类。文章涵盖从环境配置、代码编写到命令行执行及结果分析的完整流程,帮助开发者掌握Python基础单元测试技巧。
Python标准库测试工具概述
Python的标准库中内置了两个用于测试的工具。
doctest是一个轻量级模块,主要设计用于检查文档内容,但同样适用于编写简单的单元测试。
unittest则是一个功能更全面的通用测试框架,适合处理更复杂的测试场景。
doctest模块的单元测试实践
一、使用doctest进行单元测试
首先创建一个名为mymath.py的文件,其内容如下:
def square(x):
'''
计算平方并返回结果(下面是单元测试的格式)
>>> square(2)
>>> square(3)
'''
return x * x
if __name__ == '__main__':
import doctest,mymath
doctest.testmod(mymath)
在Sublime Text 3编辑器中直接运行该脚本,终端仅输出[Finished in 0.2s],未显示具体测试过程。
若需在命令行查看详细的测试报告,需切换到mymath.py所在的目录,执行命令python mymath.py -v。此时终端会输出测试的具体细节,结果显示测试通过,如下图所示:

接下来,修改mymath.py文件中square函数的实现,将return x * x改为return x / x。
再次执行python mymath.py -v命令,终端提示测试失败,具体报错信息如下图所示:

unittest框架的单元测试实践
二、使用unittest进行单元测试
继续使用mymath.py作为被测模块,其原始代码如下:
def square(x):
return x * x
新建一个名为test_math.py的单元测试文件,内容如下:
import unittest, mymath
class mathTestCase(unittest.TestCase):
def test_square(self):
self.assertEqual(mymath.square(2), 4)
self.assertEqual(mymath.square(3), 9)
if __name__ == '__main__':
unittest.main()
运行test_math.py后,终端显示OK,表明测试通过。
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
随后,将mymath.py中square函数的return x * x修改为return x / x。
再次运行test_math.py,终端显示FAILED,表明测试未通过。
F
======================================================================
FAIL: test_square (__main__.mathTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "D:\projects\python\test_math.py", line 6, in test_square
self.assertEqual(mymath.square(2), 4)
AssertionError: 1.0 != 4
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (failures=1)
以上即为本文的全部内容,希望能为您的学习提供有益帮助,也欢迎大家继续支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









