python中doctest_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自带的方式检测函数的正确性


版权声明:本文为weixin_42522389原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。