news 2026/5/30 22:15:26

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/28 15:50:12

Jenkins+RobotFramework 失败用例重执行方案

接口测试用例运行在Jenkins节点上&#xff0c;在某些情况下&#xff0c;比如网络波动等原因&#xff0c;会导致用例运行失败&#xff0c;此时会触发邮件和钉钉预警&#xff0c;通知给到责任人&#xff0c;按照现有策略&#xff0c;当本次构建失败时&#xff0c;会立马触发第二次…

作者头像 李华
网站建设 2026/5/29 0:54:10

从微调到生产:用Llama Factory构建端到端AI流水线

从微调到生产&#xff1a;用Llama Factory构建端到端AI流水线 在AI模型开发过程中&#xff0c;从实验阶段的微调到生产环境的部署往往需要跨越多个工具链和技术栈。Llama Factory作为一个集成化解决方案&#xff0c;能够帮助工程团队建立标准化的AI流程&#xff0c;覆盖从数据准…

作者头像 李华
网站建设 2026/5/28 16:31:24

Sambert-HifiGan中文语音合成的音色克隆技术

Sambert-HifiGan中文语音合成的音色克隆技术 &#x1f4cc; 技术背景与核心价值 在智能语音交互、虚拟人、有声内容生成等场景中&#xff0c;自然、富有情感的中文语音合成&#xff08;TTS&#xff09; 正成为关键能力。传统的TTS系统往往语音单调、缺乏表现力&#xff0c;难…

作者头像 李华
网站建设 2026/5/28 18:37:10

灰度测试是什么?

灰度测试是什么&#xff1f; 灰度测试是软件测试过程中的一种测试方法&#xff0c;结合了黑盒测试和白盒测试的特点。在灰度测试中&#xff0c;测试人员对系统的内部结构、设计和实现有一定的了解&#xff0c;但不完全了解所有的细节。 灰度测试是基于软件要求和设计文档进行…

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

Sambert-HifiGan语音合成在AR/VR中的应用

Sambert-HifiGan 中文多情感语音合成在 AR/VR 中的应用 引言&#xff1a;语音合成如何赋能下一代沉浸式体验&#xff1f; 随着增强现实&#xff08;AR&#xff09;与虚拟现实&#xff08;VR&#xff09;技术的快速发展&#xff0c;用户对自然、拟人化的人机交互方式提出了更高要…

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

基于python和Vue的新能源汽车租赁管理系统的设计与实现_rtg8b209

目录新能源汽车租赁管理系统的设计与实现开发技术核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;新能源汽车租赁…

作者头像 李华