python doctest检查函数正确性

目的

我们写完一个函数之后不知道我们写的对不对,python提供了一个检测机制,我们只需给出函数的正确输出的例子,函数便会自动计算看是否与我们定义的例子一样,这个功能在doctest模块中

举例

函数:计算前n个自然数的和
注意:在函数的docstring(函数说明)里我们定义了两个函数调用的例子,并且给出了我们希望得到的输出

>>> def sum_naturals(n):
...     """ Return sum of the first n natutal numbers
...
...     >>> sum_naturals(10)
...     55
...     >>> sum_naturals(100)
...     5050
...     """
...     total, k = 0, 0
...     while(k <= n):
...             total, k = total + k, k + 1
...     return total

然后我们调用doctest判断函数的正确性
首先,我们从doctest导入testmod,然后从doctest导入run_docstring_examples

>>> from doctest import testmod
>>> testmod()
TestResults(failed=0, attempted=2)
>>> from doctest import run_docstring_examples
>>> run_docstring_examples(sum_naturals, globals(), True)
Finding tests in NoName
Trying:
    sum_naturals(10)
Expecting:
    55
ok
Trying:
    sum_naturals(100)
Expecting:
    5050
ok
>>>

可以看到我们的例子都输出了ok,说明至少在给出的example中函数是正确的。
如果错误会输出什么呢?
我们将函数中的sum_naturals(10)的结果改成1,然后重复验证操作

>>> def sum_naturals(n):
...     """ Return sum of the first n natutal numbers
...
...     >>> sum_naturals(10)
...     1
...     >>> sum_naturals(100)
...     5050
...     """
...     total, k = 0, 0
...     while(k <= n):
...             total, k = total + k, k + 1
...     return total

输出

>>> run_docstring_examples(sum_naturals, globals(), True)
Finding tests in NoName
Trying:
    sum_naturals(10)
Expecting:
    1
**********************************************************************
File "__main__", line 4, in NoName
Failed example:
    sum_naturals(10)
Expected:
    1
Got:
    55
>>>

此时函数出现错误

以上就是用python自带的方式检测函数的正确性

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容