news 2026/4/18 12:10:10

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/4/18 11:06:32

Sambert-HifiGan语音合成中的多任务学习技术

Sambert-HifiGan语音合成中的多任务学习技术 引言&#xff1a;中文多情感语音合成的技术演进 随着智能客服、虚拟主播、有声阅读等应用场景的普及&#xff0c;传统单一语调的语音合成已无法满足用户对自然度、表现力和情感表达的需求。尤其在中文场景下&#xff0c;丰富的语义层…

作者头像 李华
网站建设 2026/4/18 10:50:07

Sambert-HifiGan语音合成API性能优化实战

Sambert-HifiGan语音合成API性能优化实战 引言&#xff1a;中文多情感语音合成的工程挑战 随着智能客服、有声阅读、虚拟主播等应用场景的普及&#xff0c;高质量的中文多情感语音合成&#xff08;Text-to-Speech, TTS&#xff09; 成为AI落地的关键能力之一。ModelScope推出的…

作者头像 李华
网站建设 2026/4/18 11:47:06

如何实现测试自动化?

随着软件开发的日益发展&#xff0c;测试自动化技术也越来越成熟。通过测试自动化技术&#xff0c;可以大幅度提升测试效率&#xff0c;减少测试成本&#xff0c;同时还能提高测试质量和覆盖面。那么如何实现测试自动化呢&#xff1f;下面将为大家介绍一些基本的步骤以及需要注…

作者头像 李华
网站建设 2026/4/17 1:53:14

什么是计算机网络安全?初学者指南:关键技术与学习资料全汇总

一、网络安全原理 网络安全包含两大部分内容&#xff1a;一是网络系统安全&#xff0c;二是网络上的信息安全。它涉及网络系统的可靠性、稳定性&#xff0c;以及网络上信息的保密性、完整性、可用性、真实性和可控性等。 网络系统安全&#xff1a;指保证信息处理和传输系统的…

作者头像 李华
网站建设 2026/4/16 18:43:36

VIT视觉模型+语音合成?多模态项目中Sambert提供高质量音频输出

VIT视觉模型语音合成&#xff1f;多模态项目中Sambert提供高质量音频输出 &#x1f4cc; 技术背景&#xff1a;多模态融合趋势下的语音合成新角色 随着人工智能技术的演进&#xff0c;多模态系统正成为下一代智能应用的核心架构。从图文生成到音视频联动&#xff0c;跨模态信息…

作者头像 李华
网站建设 2026/4/18 8:36:55

语音合成显存溢出?Sambert-Hifigan优化设计,支持长文本高效生成

语音合成显存溢出&#xff1f;Sambert-Hifigan优化设计&#xff0c;支持长文本高效生成 引言&#xff1a;中文多情感语音合成的现实挑战 在智能客服、有声阅读、虚拟主播等应用场景中&#xff0c;高质量的中文多情感语音合成&#xff08;Text-to-Speech, TTS&#xff09;已成…

作者头像 李华