2012伦敦奥运会女排,浏览器打不开,股票开市时间
在 python 的官方文档中,对 doctest 的介绍是这样的:
doctest 模块会搜索那些看起来像交互式会话的 python 代码片段,然后尝试执行并验证结果
即使从没接触过 doctest,我们也可以从这个名字中窥到一丝端倪。“它看起来就像代码里的文档字符串(docstring)一样” 如果你这么想的话,就已经对了一半了。
下面使用的例子是一个只有一个函数的模块,其中签入了两个 doctest 的测试用例。
unnecessary_math.py:
lang:python """ 这里也可以写 """ def multiply(a,b): """ >>> multiply(2,3) 6 >>> multiply('baka~',3) 'baka~baka~baka~' """ return a*b if __name__ == '__main__': import doctest doctest.testmod(verbose=true)
注意测试代码的位置,前面说过 doctest 的测试用例就像文档字符串一样,这句话的内涵在于:测试用例的位置必须放在整个模块文件的开头,或者紧接着对象声明语句的下一行。也就是可以被 __doc__
这个属性引用到的地方。并非像普通注释一样写在哪里都可以。另:verbose
参数用于控制是否输出详细信息,默认为 false
,如果不写,那么运行时不会输出任何东西,除非测试 fail。
示例的运行输出为:
trying: multiply(2,3) expecting: 6 ok trying: multiply('baka~',3) expecting: 'baka~baka~baka~' 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.
上例中启动测试的方式是在 __main__
函数里调用了 doctest.testmod()
函数。这对于纯容器型模块文件来说是一个好办法——正常使用时只做导入用,直接运行文件则进行测试。而对于 __main__
函数另有他用的情况,则还可以通过命令行来启动测试:
$ python -m doctest unnecessary_math.py $ python -m doctest -v unnecessary_math.py
-m
表示引用一个模块,-v
等价于 verbose=true
。运行输出与上面基本一样。 <br /> ##独立文件模式如果不想(或不能)把测试用例写进源代码里,则还可以使用一个独立的文本文件来保存测试用例。
lang:python 可选的一些解释性内容... >>> from test import multiply >>> multiply(2,3) 6 >>> multiply('baka~',3) 'baka~baka~baka~'
几乎同样的格式。运行方法可以分为在 python shell 里运行或者在系统 shell 里运行:
lang:python >>> import doctest >>> doctest.testfile('example.txt')
bash/cmd.exe:
$ python -m doctest -v example.txt
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Python爬虫:Request Payload和Form Data的简单区别说明
浅谈Python中threading join和setDaemon用法及区别说明
Python3-异步进程回调函数(callback())介绍
python继承threading.Thread实现有返回值的子类实例
Python中使用threading.Event协调线程的运行详解
网友评论