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

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

本文详细解析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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。