pytest十四:doctest 框架

doctest 从字面意思上看,那就是文档测试。doctest 是 python里面自带的一个模块,它实际上是单元测试的一种。

官方解释:doctest 模块会搜索那些看起来像交互式会话的 Python 代码片段,然后尝试执行并验证结果
doctest 测试用例可以放在两个地方
函数戒者方法下的注释里面
模块的开头

案例
先看第一个案例,将需要测试的片段,标准格式,需要运行的代码前面加>>> ,相当于进入 cmd 这种交互环境执行,期望的结果前面不需要加>>>

 

 

运行结果
Trying:
multiply(4, 3)
Expecting:
12
ok
Trying:
multiply('a', 3)
Expecting:
'aaa'
ok
1 items had no tests:
__main__

1 items passed all tests:
2 tests in __main__.multiply
2 tests in 2 items.
2 passed and 0 failed.
Test passed.
从运行的结果可以看出,虽然函数下方的注释里面有其它内容“fuction: 两个数相乘”,但不会去执行,只识别“>>>”这种符号。
2 个测试用例都是通过的,实际的结果与期望的结果一致。
def mutiply(a, b):
'''
fuction: 两个数相乘
>>> mutiply(4, 3)
12
>>> mutiply('a', 3)
'aaa'
'''
return a * b

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


失败案例
doctest 的内容放到.py 模块的开头也是可以识别到的

'''
fuction: 两个数相乘
>>> mutiply(4, 8)
12
>>> mutiply('a', 5)
'aaa'
'''
def mutiply(a, b):
'''
fuction: 两个数相乘
'''
return a * b

if __name__=='__main__':
import doctest
doctest.testmod(verbose=True)
verbose 参数,设置为 True 则在执行测试的时候会输出详细信息


cmd 执行
以上案例是在编辑器直接运行的,如果在 cmd 里面,也可以用指令去执行
> python -m doctest -v xxx.py
m 参数指定运行方式 doctest
-v 参数是 verbose,带上-v 参数相当于 verbose=True
 
 
pytest 运行
pytest 框架是可以兼容 doctest 用例,执行的时候加个参数 —doctest-modules ,这样它就能自动搜索到 doctest 的用例
> pytest -v --doctest-modules xxx.py
文档里面的每一行都会被执行,当遇到测试不通过的用例时,就不会继续往下执行了




doctest 独立文件

 


doctest 内容也可以呾代码抽离开,单独用一个.txt 文件保存
在当前 xxx.py 同一目录新建一个 xxx.txt 文件,写入测试的文档,要先导入该功能,导入代码前面也要加>>>
>>> from xxx import multiply
>>> multiply(4, 3)
12
>>> multiply('a', 3)
'aaa'
cmd 执行“python -m doctest -v xxx.txt”测试结果
 

转载于:https://www.cnblogs.com/zhongyehai/p/9690515.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值