Python单元测试模块doctest的具体使用
开发高质量软件的过程中,我们经常会为每个函数编写测试,这样在开发过程中运行这些测试的时候就比较方便,doctest是一个python标准库自带的轻量单元测试工具,适合实现一些简单的单元测试。
doctest模块提供的这样的工具,用于扫描模块并验证程序文档字符串中嵌入的测试,在docstring中寻找到测试用例并执行,比较输出结果与期望值是否符合。
我们如何构造这些测试呢?很简单
在python的交互解释器中创建测试用例,并复制到docstring中
tip:doctest在docstring中寻找测试用例的时候,认为>>>是一个测试用例的开始,直到遇到空行或者下一个>>>,在两个测试用例之间有其他内容的话,会被doctest忽略(可以利用这个特性为测试用例编写一些注释)。
我先在我自己的项目下准备一个测试脚本quality_q.py:
defaverage(values): """Computesthearithmeticmeanofalistofnumbers. >>>print(average([20,30,70])) 40.0 """ returnsum(values)/len(values) # if__name__=='__main__': importdoctest doctest.testmod(verbose=True)#automaticallyvalidatetheembeddedtests #那个verbose参数,如果设置为True则在执行测试的时候会输出详细信息。 #默认是False,表示运行测试时,只有失败的用例会输出详细信息,成功的测试用例不会输入任何信息。
启动测试的方法:
第一个是在__main__函数中调用了doctest.testmod()方法。
然后在交互解释器中执行运行脚本python3doctest_q.py
如果__main__函数有其他用途,不方便调用doctest.testmod()方法,那么可以用另外一种执行测试的方法:
在交互解释器中执行如下命令执行测试:python3-mdoctestdoctest_q.py-v
这里-m表示引用一个模块,-v等价于verbose=True
因为我是在Pycharm中创建的文件,我就直接打开Pycharm的Terminal,然后在交互解释器中切换一下脚本目录,执行的上面说到的启动方式,(顺便复习一下os模块的常用操作)
ps:读者在测试自己的例子时只需注意一下自己的当前工作目录即可
看一下最后的结果:
➜ForFpython3 Python3.7.3(default,Mar272019,09:23:15) [Clang10.0.1(clang-1001.0.46.3)]ondarwin Type"help","copyright","credits"or"license"formoreinformation. >>>importos >>>os.getcwd() '/Users/dengjiguang/PycharmProjects/ForF' >>>os.chdir('/Users/dengjiguang/PycharmProjects/ForF'+'/python_sample/quality_control') >>>os.system('python3-mdoctestdoctest_q.py-v') Trying: print(average([20,30,70])) Expecting: 40.0 ok 1itemshadnotests: doctest_q 1itemspassedalltests: 1testsindoctest_q.average 1testsin2items. 1passedand0failed. Testpassed. 0 >>>
os.getcwd():返回当前的工作目录
os.chdir(‘path'):切换工作目录
os.system(‘command'):执行系统shell命令
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。