码迷,mamicode.com
首页 > 编程语言 > 详细

python测试标准库doctest

时间:2018-02-05 12:39:13      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:nbsp   post   基本使用   log   pre   html   lin   cst   expect   

引言:

doctest是python的一个测试用标准库。这个库用来模拟控制台对话来检测值是否正确。

顾名思义,这个模块就是寻找程序里面像python交互式解释器的部分,然后运行这部分和提供的结果进行比较,来判断实际运行结果和你希望的结果是否一致。

 

基本使用:

1.通过Docstrings测试

我们先创建一个example.py,代码如下

 1 ‘‘‘
 2 docstrings可以放的位置1
 3
 4 >>> sum(1, 3)
 5 4
 6 
 7 ‘‘‘
 8 
 9 
10 def sum(a, b):
11     ‘‘‘
12     docstrings可以放的位置2
13     >>> sum(3, 5)
14     8
15     
16     >>> sum(‘a‘, ‘c‘)
17     ‘ac‘
18     ‘‘‘
19     return a + b
20     
21 if __name__ == "__main__":
22     import doctest
23     doctest.testmod()

然后我们在控制台执行命令python example.py -v,则会输出测试的结果如下

$ python example.py -v
Trying:
    sum(1, 3)
Expecting:
    4
ok
Trying:
    sum(3, 5)
Expecting:
    8
ok
Trying:
    sum(‘a‘, ‘c‘)
Expecting:
    ‘ac‘
ok
2 items passed all tests:
   1 tests in __main__
   2 tests in __main__.sum
3 tests in 2 items.
3 passed and 0 failed.
Test passed.

 注意,在样例全部通过,没有failed的情况下,“python example.py”是不会输出任何东西的,需要加参数-v打印所有的测试样例。我们可以把examp.py的第5行换成错误的结果99,在执行“python example.py”,那么会显示没有通过的样例,如下。

$ python example.py
**********************************************************************
File "example.py", line 4, in __main__
Failed example:
    sum(1, 3)
Expected:
    99
Got:
    4
**********************************************************************
1 items had failures:
   1 of   1 in __main__
***Test Failed*** 1 failures.

还有一点要注意的是,文档注释里面的

>>> sum(1, 3)

 ">>>"后面记得跟一个空格

我们再看一下

if __name__ == "__main__":
    import doctest
    doctest.testmod()

如果你不想在__main__中执行testmod(),也可以不写,执行python -m doctest -v example.py也行。

 

2.通过Test File测试

我们新建一个文本文件example.txt,里面写入

>>> from example import sum
>>> sum(2, 3)
5

 然后在example.py中替换testmod()函数为testfile()

import doctest
doctest.testfile("example.txt")

然后和1一样,运行python example.py -v

同样的,如果你不想在example.py中运行testfile(),你也可以用如下命令

python -m doctest -v example.txt

 

参考资料:

Python官方文档: https://docs.python.org/3/library/doctest.html

《流畅的Python》

\Python36\Lib\test\test_doctest.py

python测试标准库doctest

标签:nbsp   post   基本使用   log   pre   html   lin   cst   expect   

原文地址:https://www.cnblogs.com/pusidun/p/8416727.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!