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

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

摄影:产品经理厨师:kingname

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

"""
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文件,其内容如下:

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

如下图所示

现在我们运行如下代码:

python3 -m doctest test_doc.py

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

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

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

返回的报错信息里面:

Failed example:
    test(1)
Expected:
    1是偶数
Got:
    1是奇数

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

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

目录
相关文章
|
12月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
526 26
|
11月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
423 100
|
12月前
|
Python
Python的简洁之道:5个让代码更优雅的技巧
Python的简洁之道:5个让代码更优雅的技巧
455 104
|
11月前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
646 95
|
12月前
|
开发者 Python
Python神技:用列表推导式让你的代码更优雅
Python神技:用列表推导式让你的代码更优雅
750 99
|
11月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
597 88
|
11月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
1889 68
|
11月前
|
安全 Java 测试技术
《深入理解Spring》单元测试——高质量代码的守护神
Spring测试框架提供全面的单元与集成测试支持,通过`@SpringBootTest`、`@WebMvcTest`等注解实现分层测试,结合Mockito、Testcontainers和Jacoco,保障代码质量,提升开发效率与系统稳定性。
|
12月前
|
设计模式 人工智能 API
AI智能体开发实战:17种核心架构模式详解与Python代码实现
本文系统解析17种智能体架构设计模式,涵盖多智能体协作、思维树、反思优化与工具调用等核心范式,结合LangChain与LangGraph实现代码工作流,并通过真实案例验证效果,助力构建高效AI系统。
1149 7
|
12月前
|
存储 大数据 Unix
Python生成器 vs 迭代器:从内存到代码的深度解析
在Python中,处理大数据或无限序列时,迭代器与生成器可避免内存溢出。迭代器通过`__iter__`和`__next__`手动实现,控制灵活;生成器用`yield`自动实现,代码简洁、内存高效。生成器适合大文件读取、惰性计算等场景,是性能优化的关键工具。
514 2

推荐镜像

更多