最轻量级的 Python 单元测试框架
原创2022年11月10日
相较于pytest
、unittest
等框架,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...