优草派  >   Python

Python中的单元测试包是什么?详解Python单元测试的两种包的用法

翟嘉慧            来源:优草派

python的两个单元测试包分别是 doctest 和 unittest,这两个包的使用起来各有长处,适用于不同的场景,这篇文章主要介绍了Python中的单元测试包是什么?详解Python单元测试的两种包的用法,需要的朋友可以参考下,下面一起来学习学习吧!

Python中的单元测试包是什么?详解Python单元测试的两种包的用法

在一个python程序的开发过程之中,都是开发和测试两个部分的工作交错进行的,开发完成之后就要马上去进行相关的测试。而单元测试则是一个测试的范围,python中的单元测试包分别是doctest 和 unittest,它们的用法如下:

doctest它是直接可以写进一个方法体里面的,具有python语言的功能,但是不适合项目代码量太多的,这样就会使得它的代码看起来会比较复杂,它只适合代码量较少的情况。而unittest是直接可以写进一个独立的文件当中,这样项目的结构比较清晰明白,它跟doctest相反,在对一些小的测试项目中使用它就有点浪费了。

一、python实现

首先先写一个用来测试的方法:

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

二、使用doctest进行测试

def add(num1, num2):
    """
    直接写在待测方法
add(15, 5)
29
add(14, 5) > 1
True
 add(20, 40, 60)
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()

在这个示例中,运行结果是空的,因为它只是一个用来测试的程序,只有在有错误的情况下才会返回一个对你的提示。这样第三个测试语句出错了,add(20, 40, 60) 为测试方法,Traceback (most recent call last): 为异常抛出的第一句话[错误原因],TypeError: add() takes 2 positional arguments but 3 were given 为异常抛出的最后一句话[异常类型:解释说明],中间三个点省略了异常中的文件路径信息。

三、unittest

import unittest

# 引入上面的待测试方法

from src.main.add import add
class TestStatisticalFunctions(unittest.TestCase):
    def test_add(self):
        self.assertEqual(add(15, 5), 20)            add(15, 5) 的结果为 20
        self.assertTrue(add(15, 5) > 1, True)       add(15, 5) > 1 的结果为 True
        with self.assertRaises(TypeError):          add(20, 40, 60) 抛出 TypeError 异常
            add(20, 40, 60)
if __name__ == '__main__':
    unittest.main()

这个代码也不会运行出结果,它只有在报错有异常的时候,才会返回,就比如上面的第六行测试命令会出错,出错的原因是类型异常。

到此这篇关于Python中的单元测试包是什么?详解Python单元测试的两种包的用法的文章就介绍到这了,有需要的可以多参考一下。

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。