详解Python单元测试的两种写法
作者:什么都干的派森 时间:2023-02-13 06:04:20
一、前言
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()
同样,运行上面的代码什么都不会输出,因为预测结果全部正确,只有在预测结果错误的时候才会给提示
来源:https://blog.csdn.net/weixin_43721000/article/details/125649461
标签:Python,单元测试
0
投稿
猜你喜欢
javascript正则表达式模糊匹配IP地址功能示例
2024-06-12 00:28:10
python多进程提取处理大量文本的关键词方法
2022-02-17 13:07:36
网页设计中的对比原则
2010-03-20 21:50:00
perl实现检测服务器中的服务是否正常脚本分享
2022-05-05 21:17:12
ExtJS 开发总结
2009-04-28 13:05:00
Python中装饰器学习总结
2021-02-02 22:53:32
MySQL数据表添加字段的三种方式
2024-01-13 10:49:30
python简单文本处理的方法
2023-08-31 12:33:01
简单的淡入淡出图片轮换效果
2009-05-22 18:38:00
Vue父子组建的简单通信之控制开关Switch的实现
2024-06-05 09:16:25
Vue express鉴权零基础入门
2024-05-13 09:11:29
构建可视化 web的 Python 神器streamlit
2021-05-03 16:56:05
教你隐藏ACCESS数据库的表名
2008-05-09 19:45:00
php生成缩略图填充白边(等比缩略图方案)
2024-06-05 09:50:16
使用Python制作一个数据预处理小工具(多种操作一键完成)
2023-07-06 20:50:21
js删除所有的cookie的代码
2024-05-02 17:29:59
CentOS 6.4下编译安装MySQL5.6.14教程
2024-01-20 01:06:43
python脚本使用阿里云slb对恶意攻击进行封堵的实现
2021-11-20 16:32:07
sql使用cast进行数据类型转换示例
2024-01-14 07:42:11
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
2023-08-14 02:05:42