Python 单元测试

本篇为Python的单元测试的方法及示例

目录

概念

结果

示例

对函数进行测试

创建函数文件

创建测试文件

测试结果

对类进行测试

创建待测试类

创建测试文件

文档测试

创建函数

进行测试

总结


概念

用来对一个函数、一个类或者一个模块来进行正确性校验工作

结果

1.单元测试通过,说明我们测试的函数功能正常

2.单元测试不通过,说明函数功能有bug,或者测试条件输入有误

示例

对函数进行测试

创建函数文件

首先编写函数文件,在当前目录下创建 单元测试函数文件

示例如下:

# 两数相加
def mySum(num1, num2):return num1 + num2# 两数相减
def mySub(num1, num2):return num1 - num2

创建测试文件

接着在创建myTest文件进行测试,在当前目录下创建myTest文件。

示例如下:

import unittest
from 单元测试函数文件 import mySum
from 单元测试函数文件 import mySubclass Test(unittest.TestCase):def setUp(self):print('开始测试时自动调用')def tearDown(self):print('结束测试时自动调用')def test_mySum(self):self.assertEqual(mySum(1, 2), 3, '两数相加结果有误')def test_mySub(self):self.assertEqual(mySub(3, 1), 2, '两数相减结果有误')if __name__ == '__main__':unittest.main()

测试结果

运行测试文件,查看测试结果。

成功

失败

修改函数结果为一个错误返回后,提示如下:

 

对类进行测试

创建待测试类

创建person类,并设置类方法

示例如下:

class Person(object):def __init__(self, name, age):self.name = nameself.age = agedef get_age(self):return self.age

 

创建测试文件

在当前目录文件下,创建myTest文件对Person类中的函数进行测试。

示例如下:

import unittest
from Person import Personclass Test(unittest.TestCase):def test_init(self):per = Person('hello', 20)self.assertEqual(per.name, 'hello', '属性赋值有误')def test_get_age(self):per = Person('hai', 25)self.assertEqual(per.get_age(), per.age, 'get_age函数有误')if __name__ == '__main__':unittest.main()

测试结果与对函数进行单元测试相似,就不在截图示例了。

文档测试

创建函数

引入doctest库,创建两数相加函数。

并对函数增加注释,最后通过文档进行测试结果是否符合。

示例如下:

import doctest# doctest模块可以提取注释中的代码执行
# doctest严格按照python交互模式的输入提取def mySum(x, y):'''得到x与y两数之和:param x: 第一个数:param y: 第二个数:return: sumexample:>>> print(mySum(1, 2))3'''return x + y

注意:注释代码前需要有一个空格

进行测试

示例如下:

if __name__=='__main__':doctest.testmod(verbose=True)

效果如下:

总结

测试是一种必要的保障项目质量的有效方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/739246.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

提取B站视频教程详情

提取B站视频教程详情 背景 B站这个视频列表是真的体验感太差了,有时候想把章节复制下来,再对应的章节下面做笔记,实在是太难搞了,于是就有了这篇文文章 根据关键字获取视频id Test public void list() {String url "https://api.bilibili.com/x/web-interface/wbi/sea…

虚拟机(KVM)克隆

当需要批量部署虚拟机时,可以使用克隆虚拟机的方式来进行。 使用图形界面来克隆虚拟机。 [rootzhoujunru_node1 zhou]# virsh list --allId Name State ------------------------------ vm01 shut off- vm01-clone shut off克隆完成。

Django入门 整体流程跑通

Django学习笔记 一、Django整体流程跑通 1.1安装 pip install django //安装 import django //在python环境中导入django django.get_version() //获取版本号,如果能获取到,说明安装成功Django目录结构 Python310-Scripts\django-admi…

Centos7 安装mongodb 7.0

官方手册参考: https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-red-hat/ Mongodb支持的版本 安装 MongoDB 社区版 按照以下步骤使用包管理器安装 MongoDB Community Edition yum。 配置包管理系统 ( yum) 创建一个/etc/yum.repos.d/mongodb-o…

Mabatis缓存详细介绍

MyBatis缓存分为一级缓存和二级缓存,是 MyBatis 中用于提高性能的两种缓存机制。 一级缓存 定义: 一级缓存指的是在同一个 SqlSession 中执行相同的查询语句时,第二次及后续的查询会直接从内存中获取结果,而不需要再次查询数据库…

容量治理三板斧:扩容、限流与降级

前言 随着现代软件系统日益复杂和用户规模的不断增长,分布式架构成为了保持系统高可用性与高性能的标准解决方案。然而,随之而来的是对系统容量治理的新挑战。在这样的背景下,容量治理成为了分布式系统设计和运维中不可或缺的一环。要确保系…

Python 主线任务之列表和操作列表,知其然知其所以然【玩转Python】

主线任务 主线任务之数据类型已进行66.6%,今日主线任务为“列表和操作列表”的了解和掌握。了解“列表”是什么的同时也不要忽略“怎么用”。即"知其然知其所以然",方能达到学习的更优效果。 接下来让我们一起开启今日份的Python的主线任务。…

Orange3数据预处理(转换器组件)

该组件接收数据,然后重新应用之前在模板数据上执行的转换。 这些转换包括选择变量的子集以及从数据中出现的其他变量计算新的变量, 例如,离散化、特征构建、主成分分析(PCA)等。 在Orange3中,描述的这个组件…

php运行报错: Class ‘SimpleXMLElement‘ not found in

前言 CentOS7php 8.1.27CentOS7 利用remi yum源安装php8.1 php运行报错: Class ‘SimpleXMLElement’ not found in [12-Mar-2024 05:47:29 UTC] PHP Warning: Undefined array key "token" in /data/www/a.php on line 3 [12-Mar-2024 05:47:29 UTC]…

初窥机器学习

人工智能 近几年来,人工智能(AI)已成为家喻户晓的术语,我们在游戏、电影(还记得J.A.R.V.I.S吗?)和书籍中经常看到它的提及和描绘,但人工智能究竟是什么呢? 人工智能简单…

Linux下阻塞IO驱动实验实例三

一. 简介 前面两篇学习了两种针对应用程序阻塞式访问设备时,驱动的处理方法。文章地址如下: Linux下阻塞IO驱动实验实例一-CSDN博客 Linux下阻塞IO驱动实验实例二-CSDN博客 本文继续学习另外一种针对阻塞式访问设备,驱动的实现方式,核心还是使用等待队列的机制。 二. …

【Python】新手入门学习:什么是硬编码?如何避免硬编码?

【Python】新手入门学习:什么是硬编码?如何避免硬编码? 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教…

Python爬虫-使用Prefect框架实现一个可视化爬虫项目

前言 本文是该专栏的第19篇,后面会持续分享python爬虫干货知识,记得关注。 相信有的同学,在处理爬虫项目的时候,有时也会需要你将爬虫项目进行一个可视化展示,方便管理者能及时详细的了解当前爬虫任务的执行进度以及执行情况,甚至需要做一个爬虫监控预警的可视化任务。 …

初学Vue+Element——Element使用

0 引言 前端的开发模式为MVVM(Model-View-ViewModel),而Vue侧重于VM开发,主要用于数据绑定到视图的,而ElementUI则侧重于V开发的前端框架,主要用于开发美观的页面的。 1 ElementUI介绍 Element:是饿了么公司前端开发…

项目实战-tpshop商城项目

项目实战-tpshop商城项目 环境部署准备软件工具准备远程连接测试远程连接测试-查看虚拟机IP地址远程连接测试-检测本机与虚拟机是否连通远程连接测试-通过远程工具连接linux服务器 常见问题处理 环境部署项目技术架构介绍部署tpshop项目-tpshop验证数据库验证用户信息表熟悉商品…

智慧公厕的创新:革命性的城市公共卫生设施

在现代城市中,公厕作为城市卫生设施的重要组成部分,对于提升城市形象和保障市民生活品质起着重要作用。然而,传统公厕普遍存在环境脏乱差、设施老旧、管理不规范等问题,给市民的使用体验带来了很多不便和不愉快。针对这一问题&…

魔法之线:探索string类的神秘世界

🎉个人名片: 🐼作者简介:一名乐于分享在学习道路上收获的大二在校生 🙈个人主页🎉:GOTXX 🐼个人WeChat:ILXOXVJE 🐼本文由GOTXX原创,首发CSDN&…

bug--xxoobject has no attribute xxx

Python 创建类的实例后却不能调用写的方法,检查了半天原来是缩进的问题,def函数不应该和class并列 只能说这个英文空格太小了,看不出来。。。。

敏捷估算: 成功的技巧和窍门

敏捷估算在敏捷项目管理中扮演着关键的角色,使团队能够估算完成任务所需的工作量、时间和资源。精确的估算使团队能够有效地计划他们的工作,管理期望,并在整个项目期间做出明智的决策。在本文中,我们将深入探讨各种敏捷估算技术和…

【线代基础】张量、向量、标量、矩阵的区别

1、标量(Scalar) 纯数字,无方向性、无维度概念。因此也叫 标量张量、零维张量、0D张量 例如,x18,x21.34 x1、x2即为标量 2、张量(tensor) 具有方向性,可以理解为一个多维数组&a…