news 2026/5/1 9:09:53

Doctest:让你的测试更简单高效

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Doctest:让你的测试更简单高效

简介:Doctest 是 Python 标准库的一部分,它允许开发者通过在文档字符串(docstrings)中编写示例来进行测试。这不仅可以在确保代码正确性的同时编写文档,还可以让读者更容易理解代码的用法和期望的输出。

对比 unittest、pytest 优势:

1、简洁性:与 unittest 和 pytest 相比,Doctest 的语法更为简洁,它将测试示例写在文档字符串中,让测试看起来更清晰、易读。

2、直观性:通过阅读 Doctest 中的示例,开发者和用户能够快速理解函数或方法的用法。

3、易用性:Doctest 不需要额外的安装和配置,它是 Python 标准库的一部分,可以直接使用。

安装:Doctest 是 Python 的内置库,不需要额外的安装。

参数说明:常见的参数:

  1. -v:启用详细模式,显示所有测试用例的输出结果。

  2. doctest.testmod():运行当前模块中的所有 Doctest。

  3. verbose 参数,如果设置为True则在执行测试的时候会输出详细信息。

  4. 默认是False,表示运行测试时,只有失败的用例会输出详细信息,成功的测试用例不会输出任何信息。

案例:测试加法函数测试字符串反转函数、在类对象方法的使用。

  1. # -*- coding: utf-8 -*-

  2. # time: 2023/9/26 0:47

  3. # file: doctest_demo.py

  4. import doctest

  5. def add(a, b):

  6. """

  7. # case1 加法函数

  8. This function adds two numbers and returns the sum.

  9. >>> add(2, 3)

  10. 5

  11. >>> add(-1, 1)

  12. 0

  13. """

  14. return a + b

  15. def reverse_string(s):

  16. """

  17. # case2 翻转字符串函数

  18. This function returns the reversed string.

  19. >>> reverse_string('hello')

  20. 'olleh'

  21. >>> reverse_string('Python')

  22. 'nohtyP'

  23. """

  24. return s[::-1]

  25. class Cat:

  26. def __init__(self, name, age):

  27. self.name = name

  28. self.age = age

  29. def fishing(self):

  30. """

  31. >>> c = Cat('tom', 5)

  32. >>> c.fishing()

  33. tom is a cat, 5 years old, and now he is fishing.

  34. True

  35. >>> c = Cat('Lucy', 22)

  36. >>> c.fishing()

  37. Lucy is too old to fish.

  38. False

  39. >>> c = Cat('Lily', 1)

  40. >>> c.fishing()

  41. Lily is too young to fish yet.

  42. False

  43. """

  44. if 2 <= self.age <= 20:

  45. print(f"{self.name} is a cat, {self.age} years old, and now he is fishing.")

  46. return True

  47. elif self.age < 2:

  48. print(f"{self.name} is too young to fish yet.")

  49. return False

  50. else:

  51. print(f"{self.name} is too old to fish.")

  52. return False

  53. if __name__ == '__main__':

  54. doctest.testmod(verbose=True)

运行结果:

不符合预期时:

注意事项:确保测试用例的输出结果与示例中的完全匹配,包括空格和换行。Doctest 更适用于简单的、不需要太多设置和清理的测试场景。

总结:Doctest 是一个简单、直观、易用的测试框架,它通过文档字符串中的示例让你能够快速编写和理解测试。与其他测试框架相比,Doctest 为简单的测试场景提供了一个清晰、高效的解决方案。在日常的 Python 开发中,合理利用 Doctest 可以帮助你更好地保证代码的正确性和质量。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 5:04:24

2025年火遍全球的Manus该怎么用?估值几十亿美元Manus该怎么用?

估值几十亿美元Manus该怎么用? 你有没有发现一个问题&#xff0c;身边为什么从来没有人用Manus&#xff1f;那它是怎么做到估计几十亿美元的&#xff1f;因为它本身的定位就不是天天用的AI。 你可能习惯了每天打开ChatGPT问几个问题&#xff0c;或者用Midjourney生成几张图片…

作者头像 李华
网站建设 2026/5/1 5:01:28

深度测评本科生必用TOP8 AI论文网站:开题报告文献综述全解析

深度测评本科生必用TOP8 AI论文网站&#xff1a;开题报告文献综述全解析 学术写作新工具测评&#xff1a;2026年本科生必用AI论文网站TOP8榜单出炉 在当前学术研究日益数字化的背景下&#xff0c;本科生在撰写论文时面临的挑战也愈发复杂。从开题报告到文献综述&#xff0c;再到…

作者头像 李华
网站建设 2026/5/1 5:01:55

Sambert-Hifigan情感控制参数说明:调节语调/语速/情绪强度

Sambert-Hifigan情感控制参数说明&#xff1a;调节语调/语速/情绪强度 &#x1f4d6; 项目简介 本技术博客聚焦于 ModelScope 平台上的 Sambert-Hifigan 中文多情感语音合成模型&#xff0c;深入解析其核心情感控制参数的使用方法。该模型支持通过调节语调、语速与情绪强度等维…

作者头像 李华
网站建设 2026/5/1 6:07:15

OCR识别标准化:CRNN的接口规范

OCR识别标准化&#xff1a;CRNN的接口规范 &#x1f4d6; 项目简介 在数字化转型加速的今天&#xff0c;OCR&#xff08;光学字符识别&#xff09;技术已成为信息自动化处理的核心环节。从发票扫描到文档归档&#xff0c;从路牌识别到手写笔记转录&#xff0c;OCR 正广泛应用于…

作者头像 李华
网站建设 2026/5/1 8:51:49

Llama Factory可视化:无需代码快速定制你的对话AI

Llama Factory可视化&#xff1a;无需代码快速定制你的对话AI 作为一名非技术背景的创业者&#xff0c;你可能经常遇到这样的困扰&#xff1a;想验证一个AI对话产品的想法&#xff0c;却被复杂的代码和命令行操作劝退。今天我要分享的Llama Factory可视化工具&#xff0c;正是为…

作者头像 李华
网站建设 2026/5/1 7:16:19

快速验证:用LLaMA Factory和预配置镜像一小时测试模型可行性

快速验证&#xff1a;用LLaMA Factory和预配置镜像一小时测试模型可行性 作为一名创业者&#xff0c;当你有一个AI产品的想法时&#xff0c;最迫切的需求往往是快速验证技术可行性。本文将介绍如何利用LLaMA Factory框架和预配置镜像&#xff0c;在一小时内完成大模型的基本功能…

作者头像 李华