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. # 公众号: 咖啡加剁椒

  5. import doctest

  6. def add(a, b):

  7. """

  8. # case1 加法函数

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

  10. >>> add(2, 3)

  11. 5

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

  13. 0

  14. """

  15. return a + b

  16. def reverse_string(s):

  17. """

  18. # case2 翻转字符串函数

  19. This function returns the reversed string.

  20. >>> reverse_string('hello')

  21. 'olleh'

  22. >>> reverse_string('Python')

  23. 'nohtyP'

  24. """

  25. return s[::-1]

  26. class Cat:

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

  28. self.name = name

  29. self.age = age

  30. def fishing(self):

  31. """

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

  33. >>> c.fishing()

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

  35. True

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

  37. >>> c.fishing()

  38. Lucy is too old to fish.

  39. False

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

  41. >>> c.fishing()

  42. Lily is too young to fish yet.

  43. False

  44. """

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

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

  47. return True

  48. elif self.age < 2:

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

  50. return False

  51. else:

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

  53. return False

  54. if __name__ == '__main__':

  55. doctest.testmod(verbose=True)

运行结果:

不符合预期时:

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

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

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

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

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

  • 30
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值