返回顶部
首页 > 资讯 > 后端开发 > Python >详解Python单元测试的两种写法
  • 848
分享到

详解Python单元测试的两种写法

2024-04-02 19:04:59 848人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、前言二、实现1.doctest2.unittest一、前言 python的两个单元测试包分别是 doctest 和 unittest,这两个包的使用起来各有长处,适用于不同的

一、前言

python的两个单元测试包分别是 doctest 和 unittest,这两个包的使用起来各有长处,适用于不同的场景

  • doctest:直接写在方法体中,利用了 Python 动态语言的特性,书写方式简单明了,前提是项目不要太大,如果项目复杂代码量大,再加上写在方法体中的单元测试,整体就会看起来有些臃肿,因此 doctest 适用于代码量不大的普通项目
  • unittest:一般写在独立文件中,与 spring 的单元测试有点像,项目结构清晰,不过简单项目中测试一些小功能的话实属dark不必了

二、实现

先写一个待测试的方法

def add(num1, num2):
    return num1 + num2

1.doctest

def add(num1, num2):
    """
    直接写在待测方法中
    
    >>> add(14, 5)
    19
    >>> add(14, 5) > 1
    True
    
    >>> add(20, 30, 70)
    Traceback (most recent call last):
        ...
    TypeError: add() takes 2 positional arguments but 3 were given
    """
    return num1 + num2
if __name__ == "__main__":
    import doctest
    doctest.testmod()

运行上面的代码什么都不会输出,因为预测结果全部正确,只有在预测结果错误的时候才会给提示
ps:

  • add(14, 5) 为测试方法,19 为预测结果
  • add(14, 5) > 1 为测试方法,True 为预测结果
  • add(20, 30, 70) 为测试方法,Traceback (most recent call last): 为异常抛出的第一句话【错误原因】,TypeError: add() takes 2 positional arguments but 3 were given 为异常抛出的最后一句话【异常类型:解释说明】,中间三个点省略了异常中的文件路径信息

2.unittest

import unittest
# 引入上面的待测试方法
from src.main.add import add
class TestStatisticalFunctions(unittest.TestCase):
    def test_add(self):
        self.assertEqual(add(14, 5), 19)            # 断言 add(14, 5) 的结果为 19
        self.assertTrue(add(14, 5) > 1, True)       # 断言 add(14, 5) > 1 的结果为 True
        with self.assertRaises(TypeError):          # 断言 add(20, 30, 70) 抛出 TypeError 异常
            add(20, 30, 70)
if __name__ == '__main__':
    unittest.main()

同样,运行上面的代码什么都不会输出,因为预测结果全部正确,只有在预测结果错误的时候才会给提示

到此这篇关于Python单元测试的两种写法的文章就介绍到这了,更多相关Python单元测试内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 详解Python单元测试的两种写法

本文链接: https://lsjlt.com/news/119214.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作