前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一日一技:使用doctest测试Python代码的注释

一日一技:使用doctest测试Python代码的注释

作者头像
青南
发布2019-08-26 15:47:48
6570
发布2019-08-26 15:47:48
举报
文章被收录于专栏:未闻Code

如果大家看过一些有名的Python开源项目,你可能会看到他们在文档型注释里面,出现了下面这样的使用示例:

代码语言:javascript
复制
"""
Requests HTTP Library
~~~~~~~~~~~~~~~~~~~~~
Requests is an HTTP library, written in Python, for human beings.
Basic GET usage:
   >>> import requests
   >>> r = requests.get('https://www.python.org')
   >>> r.status_code
   200
   >>> b'Python is a programming language' in r.content
   True

...
"""

这段代码来自 requestshttps://github.com/psf/requests/blob/master/requests/__init__.py

可能有同学会觉得,这只是普通的注释,帮助读代码的人知道这段代码是怎么用的。

但实际上,Python自带的 doctest模块,可以识别这种注释,并根据这里的用法来测试对应的函数或者类。

例如,我们创建一个 test_doc.py文件,其内容如下:

代码语言:javascript
复制
def test(n):
    """
    用于判断传入参数n的奇偶性
    >>> test(1)
    1是奇数
    >>> test(2)
    2是偶数
    """
    if n % 2 == 0:
        print(f'{n}是偶数')
    else:
        print(f'{n}是奇数')

如下图所示

现在我们运行如下代码:

代码语言:javascript
复制
python3 -m doctest test_doc.py

发现没有任何输出,如下图所示:

现在,我们把这个注释 改错,让注释与实际情况不符合,如下图所示:

保存代码,再次运行命令,发现报错了,如下图所示:

返回的报错信息里面:

代码语言:javascript
复制
Failed example:
    test(1)
Expected:
    1是偶数
Got:
    1是奇数

Expected表示期望的输出结果, Got表示实际的输出结果。

通过使用doctest,可以有效帮你完善函数或者类的文档,并且当你每次修改了函数或类的时候,都用doctest来检查一下,如果输入输出发生了改变,doctest就会发现并告诉你。

doctest的详细使用,可以阅读Python的官方文档:https://docs.python.org/3/library/doctest.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 未闻Code 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档