最轻量级的 Python 单元测试框架

MicLon原创2022年11月10日
大约 1 分钟

相较于pytestunittest等框架,doctest是最轻量级的单元测试框架,它的特点是:

  • 无需编写测试代码,只需在文档中添加测试用例
  • python内置,无需安装
  • 使用学习成本超低

在编写代码时,我们可以在文档中添加测试用例,然后使用doctest来执行测试用例,从而验证代码的正确性。

比如我想测试get_right函数,它的作用是在给定一段字符串中,找出指定字符串右边的剩余字符串。

也就是上图中的>>> get_right('abc123def', 'abc'),它的返回值应该是'123def'

# string.py
if __name__ == '__main__':
    import doctest
    doctest.testmod(verbose=True)

你可以在文件末尾添加上述代码,然后在终端中执行python string.py来执行测试用例。

Trying:
    get_right('abc123def', 'abc')
Expecting:
    '123def'
ok

由于加了verbose参数,所以会打印出测试用例的执行结果。

同样地,由于doctest是python内置模块,可以使用python -m doctest来执行测试用例。

python -m doctest -v string_.py # -v参数表示打印测试用例的执行结果

运行原理

doctest的运行原理十分简单,首先它将会使用魔术方法__doc__来获取文档字符串,然后将文档字符串中的测试用例通过正则提取出来,最后执行测试用例。

提取测试用例和预期值

执行测试用例

Loading...