python的两个单元测试包分别是 doctest 和 unittest,这两个包的使用起来各有长处,适用于不同的场景,这篇文章主要介绍了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单元测试的两种包的用法的文章就介绍到这了,有需要的可以多参考一下。