Python中的Unittest基本使用
作者:哲思天下 发布时间:2022-04-27 15:49:51
前言:
Unittest又名单元测试,主要用于测试自己写的代码的正确性和完备性,也方便自己和他人对代码的维护。在软件开发过程中,测试驱动开发的理念是一种好的开发习惯。
例如现在我们写了一个求绝对值的函数my_abs,存放在myAbs.py中
def my_abs(number):
if not (isinstance(number, int) or isinstance(number, float)):
raise ValueError("invalid value %s" % number)
else:
if(number >= 0):
return number
else:
return -number
此处的my_abs函数对参数做了检查,参数必须是一个数(python的数只有int和float型)。那么如果想要测试这个函数的正确性,我们需要写一个测试函数,用于测试函数的各个分支情况。
基于unittest的的测试代码如下:
import unittest
from myAbs import my_abs
class TestmyAbs(unittest.TestCase):
def test_positive(self):
self.assertEqual(my_abs(1), 1)
def test_zero(self):
self.assertEqual(my_abs(0), 0)
def test_negative(self):
self.assertEqual(my_abs(-1), 1)
def test_inputerror(self):
with self.assertRaises(ValueError):
my_abs("1")
if __name__ == "__main__":
unittest.main()
上述代码存放在test_myAbs.py中。
unittest的基本使用方法是:
1. 文件命名以test_开头,这样方便unittest自动执行,unittest能自动识别目录下test_开头的文件执行
2. import unittest 这个是运行unittest的前提
3. 定义class要以Test开头,必须要从unittest.TestCase继承,且不能有init方法,测试的方法或者函数以test_开头
4. 测试方法中使用assert进行断言
在上面测试代码的TestMyabs类的方法中,分别对正数,零和负数的情况进行了测试,使用assertEqual进行结果的判定;另外测试中还对输入参数是无效的情况进行了判定,使用了with语句和assertRaises的方式,针对期望抛出来的异常进行判定
unittest的运行方式:
1. 单独运行test_myAbs.py文件,前提是在文件尾增加
if __name__ == "__main__":
unittest.main()
2. 发送命令 python -m unittest .\myAbs.py
当发送命令python -m unittest时,会执行当前目录下所有test_开头的文件
运行结果如下:
Testing started at 4:43 PM ...
Launching pytest with arguments C:/work/myPythonPrj/test_myAbs.py --no-header --no-summary -q in C:\work\myPythonPrj
============================= test session starts =============================
collecting ... collected 4 items
test_myAbs.py::TestmyAbs::test_inputerror PASSED [ 25%]
test_myAbs.py::TestmyAbs::test_negative PASSED [ 50%]
test_myAbs.py::TestmyAbs::test_positive PASSED [ 75%]
test_myAbs.py::TestmyAbs::test_zero PASSED [100%]
============================== 4 passed in 0.03s ==============================
Process finished with exit code 0
来源:https://blog.csdn.net/yangjingdong2008/article/details/126485681


猜你喜欢
- 本文实例为大家分享了Python模拟用户登录验证的具体代码,供大家参考,具体内容如下1.功能简介此程序模拟用户登录验证的过程,实现用户名输入
- lambda函数用法lambda非常重要的一个定义。lambda在【运行时】才绑定,【不是】在定义的时候绑定。下面这个列子:本意想:让X分别
- python下os模块强大的重命名方法renames详解 在python中有很多强大的模块,其中我们经常要使用的就是OS模块,OS
- 一、简介wxPython是Python语言的一套优秀的GUI图形库,允许Python程序员很方便的创建完整的、功能键全的GUI用户界面。 w
- 在正文前,先简短介绍自己。我任职于广州的某个网站服务公司的系统开发员,主要任务是以.Net编写各种web系统,例如CMS.EIP。大家都知道
- 前言离过年还有十多天,在这里提前祝各位小伙伴新年快乐呀~先说句题外话:疫情还是比较严峻,各位小伙伴要是出门的话一定要做好防护措施呀,不出门的
- 本文所述实例来自独立软件开发者 Alex Marandon,在他的博客中曾介绍了数个关于 Python Collection 的实用小技巧,
- 实现思路将视频(MP4 等)转换为 M3U8 视频的服务,可以按照以下步骤进行操作:将视频(MP4 等)转换为 M3U8:在服务中,使用适当
- 本文实例为大家分享了微信小程序实现简单计算器与秒表的具体代码,供大家参考,具体内容如下实验内容:任务一:实现一个简单的加减乘除运算。首先输入
- 【OpenCV】⚠️高手勿入! 半小时学会基本操作 ⚠️ 对象测量概述OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大.
- 首先,Python 标准库中的 urllib2 模块提供了你所需要的大多数 HTTP 功能,但是它的 API 不友好。它是为另一个时代、另一
- 一提起Google的产品,大多数人可能都会想到用一个词来形容,“简洁”。简单得来又实用,这就是Google的产品设计方针了。Jon Wile
- 备注 与 DELETE 语句相比,TRUNCATE TABLE 具有以下优点: 所用的事务日志空间较少。 DELETE 语句每次删除一行,并
- 作为一个非设计出生的研究思路偏向的设计师,带着少了设计师自恋和自怜的眼光,我记下最近一年来感受到的交互设计师的尴尬。交互设计师就是出界面的,
- 本文实例讲述了python在windows命令行下输出彩色文字的方法。分享给大家供大家参考。具体分析如下:默认情况下python在控制台输出
- 本文主要讨论了python中getpass模块的相关内容,具体如下。getpass模块昨天跟学弟吹牛b安利Python标准库官方文档的时候偶
- TensorFlow用张量这种数据结构来表示所有的数据。用一阶张量来表示向量,如:v = [1.2, 2.3, 3.5] ,如二阶张量表示矩
- 编写Python SDK代码工程目录结构├──── easyhttp
- 1. SELECT…FOR UPDATE 是什么?作用是什么?select for update 即排他锁,排他锁又称
- 【前言】 之前由于小编的错误操作误删了注册表中的一项关于sql的内容,具体删了什么,也忘