Python单元测试工具doctest和unittest使用解析

小岛来信
小岛来信
发布时间:2026-10-13 | 5人浏览过
原创

本文详细解析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)

以上即为本文的全部内容,希望能为您的学习提供有益帮助,也欢迎大家继续支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表