news 2026/8/16 2:59:49

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/8/13 15:10:04

大模型面试必看!从RoPE到GraphRAG,十大高频面试题全解析(建议收藏)

本文整理了大模型技术面试的一、二面高频问题&#xff0c;涵盖RoPE相对位置编码原理、LoRA初始化方法、RAG与GraphRAG流程及优势对比、幻觉处理等关键技术点&#xff0c;并附有编程题示例&#xff0c;为大模型求职者提供全面的技术准备指南。一面 1.RoPE 为什么能实现相对位置编…

作者头像 李华
网站建设 2026/8/8 0:47:00

如何通过 RPA 构建企业微信外部群的自动化 SOP 流程?

一、 什么是外部群 SOP 自动化&#xff1f; 在私域运营中&#xff0c;SOP&#xff08;标准作业程序&#xff09; 是确保服务质量的关键。然而&#xff0c;官方接口在外部群&#xff08;尤其是包含非组织内成员的群聊&#xff09;的主动管理上&#xff0c;往往需要大量的人工配合…

作者头像 李华
网站建设 2026/8/7 6:13:32

基于python和vue的校园二手书交易系统_w387km94

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

作者头像 李华
网站建设 2026/8/6 1:28:08

Sambert-HifiGan在智能零售中的语音导购应用

Sambert-HifiGan在智能零售中的语音导购应用 引言&#xff1a;让AI声音更懂用户情绪的购物引导 在智能零售场景中&#xff0c;传统的自动化语音播报往往缺乏情感温度&#xff0c;机械单调的声音难以吸引顾客注意力&#xff0c;甚至可能引发听觉疲劳。随着消费者对个性化服务体验…

作者头像 李华
网站建设 2026/8/14 17:45:12

模型对比实验:LLaMA Factory多框架性能基准测试

模型对比实验&#xff1a;LLaMA Factory多框架性能基准测试指南 为什么需要做多框架性能基准测试 在大模型微调领域&#xff0c;技术选型团队经常面临一个关键问题&#xff1a;如何选择最适合项目需求的微调框架&#xff1f;LLaMA Factory作为当前流行的开源低代码大模型微调框…

作者头像 李华