python中doctest_python doctest检查函数正确性

本文介绍了如何利用Python内置的doctest模块来测试和验证函数的正确性。通过在函数docstring中提供预期的输出示例,doctest会自动比较实际函数运行结果与预期结果是否一致。通过`testmod`和`run_docstring_examples`函数,我们可以轻松检查函数在给定例子中的表现,从而确保其正确性。
摘要由CSDN通过智能技术生成

目的

我们写完一个函数之后不知道我们写的对不对,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自带的方式检测函数的正确性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值