doctest框架
doctest是python自带的一个模块,doctest测试用例可以放在两个地方
函数或者方法下的注释里面
模块的开头
'''
>>> number('a', 3)
'aaa'
'''
import doctest
def number(a, b):
'''
fuction:两个数相乘
>>> number(3, 4)
12
'''
return a * b
if __name__ == '__main__':
doctest.testmod(verbose=True)
Trying:
number('a', 3)
Expecting:
'aaa'
ok
Trying:
number(3, 4)
Expecting:
12
ok
2 items passed all tests:
1 tests in __main__
1 tests in __main__.number
2 tests in 2 items.
2 passed and 0 failed.
Test passed.
上述代码中 verbose=True 这样在执行测试的时候会输出详细信息,否则不会输出任何东西
我们也可以通过命令行来执行 > python -m doctest -v ceshi.py
pytest是可以完美兼容doctest的,执行的时候需要加个参数 --doctest-module,这样就可以搜索到doctest用例并运行了
> pytest -v --doctest-module ceshi.py
doctest内容可以和代码分离开,单独的存放到一个 .txt 文件当中
我们在 ceshi.py 同级目录下创建个 ceshi.txt 文件,写入测试内容,首先我们要导入该功能,导入的时候前边也得加 >>>
>>> from ceshi import number
>>> number(3,4)
12
命令执行 > python -m doctest -v ceshi.txt
Trying:
from ceshi import number
Expecting nothing
ok
Trying:
number(3,4)
Expecting:
12
ok
1 items passed all tests:
2 tests in ceshi.txt
2 tests in 1 items.
2 passed and 0 failed.
Test passed.