脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - 详解Python单元测试的两种写法

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

2022-07-07 17:12什么都干的派森 Python

python的两个单元测试包分别是 doctest 和 unittest,这两个包的使用起来各有长处,适用于不同的场景,这篇文章主要介绍了Python单元测试的两种写法,需要的朋友可以参考下

一、前言

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

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

二、实现

先写一个待测试的方法

?
1
2
def add(num1, num2):
    return num1 + num2

1.doctest

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 为异常抛出的最后一句话【异常类型:解释说明】,中间三个点省略了异常中的文件路径信息

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

2.unittest

?
1
2
3
4
5
6
7
8
9
10
11
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单元测试内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/weixin_43721000/article/details/125649461

延伸 · 阅读

精彩推荐
  • PythonPython基础之元编程知识总结

    Python基础之元编程知识总结

    很多人不理解“元编程”是个什么东西,关于它也没有一个十分准确的定义.这篇文章要说的是Python里的元编程,实际上也不一定就真的符合“元编程”的定义...

    克金森沐沐5812021-11-11
  • Pythonpython接口自动化测试数据和代码分离解析

    python接口自动化测试数据和代码分离解析

    代码的可维护性除了代码冗余之外还有就是数据尽量不要和代码掺杂在一起,因为阅读起来会非常的凌乱;数据分离能更好的增加代码可读性和可维护性,...

    一名小测试9242022-01-01
  • PythonPython进度条的使用

    Python进度条的使用

    在使用Python处理比较耗时操作的时候,为了便于观察处理进度,就需要通过进度条将处理情况进行可视化展示,本文主要介绍了Python进度条的使用,分享给...

    老马的程序人生9132021-11-02
  • Pythonpython基础之类方法和静态方法

    python基础之类方法和静态方法

    这篇文章主要介绍了python类方法和静态方法,实例分析了Python中返回一个返回值与多个返回值的方法,需要的朋友可以参考下...

    qianqqqq_lu10372022-02-17
  • Pythonpython转换字符串为摩尔斯电码的方法

    python转换字符串为摩尔斯电码的方法

    这篇文章主要介绍了python转换字符串为摩尔斯电码的方法,涉及Python字符串及编码操作的相关技巧,非常简单实用,需要的朋友可以参考下 ...

    pythoner13802020-07-19
  • Pythonpython3 面向对象__类的内置属性与方法的实例代码

    python3 面向对象__类的内置属性与方法的实例代码

    这篇文章主要介绍了python3 面向对象__类的内置属性与方法的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下...

    admin_maxin7532021-04-17
  • PythonPython类的专用方法实例分析

    Python类的专用方法实例分析

    这篇文章主要介绍了Python类的专用方法,实例分析了__init__、__del__、__repr__等专用方法的应用技巧,需要的朋友可以参考下 ...

    脚本之家2452020-05-18
  • Python详解Python3 中的字符串格式化语法

    详解Python3 中的字符串格式化语法

    字符串的格式化方法分为两种,分别为占位符(%)和format方式。这篇文章主要介绍了Python3 中的字符串格式化语法问题,需要的朋友可以参考下 ...

    mrr5822020-04-22