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…

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

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

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

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

初窥机器学习

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

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

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

初学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…

python学习笔记 -- 函数

目录 一. 函数的定义和调用 二. 函数的返回值 三. 变量的作用域 四. 函数的链式调用 五. 函数的嵌套调用 六. 函数的递归调用 七. 函数参数的默认值 八. 关键字传参 一. 函数的定义和调用 函数,指一段可以被重复调用的代码。在python中,函数定义…

Redis系列之持久化机制RDB和AOF

Redis系列之持久化机制RDB和AOF 文章目录 1. 为什么需要持久化?2. 持久化的方式3. RDB机制3.1 RDB机制介绍3.2 配置RDB3.3 什么时候触发3.4 操作实例3.5 RDB优势和不足 4. AOF机制4.1 什么是AOF机制?4.2 同步机制4.3 重写机制4.4 AOF的优势和不足 混合模…

简单使用国产数据库—达梦

达梦数据库是一款由中国的达梦软件公司开发的关系数据库管理系统(RDBMS),它在业界以其高性能、可扩展性和安全性而著称。该系统广泛应用于各种应用程序的数据存储和管理,满足用户对于数据处理和管理的多样化需求。 安装好的达梦数…

119.龙芯2k1000-pmon(18)-全自动安装linux系统

经过两天的测试和完善,现在基本已经正常可用了。 (全自动是假,接近全自动吧。) 需要使用配测电脑的网络功能,windows即可,脱离linux虚拟机。(理论上讲u盘也是可以的) 测试平台&…

客户案例|100M 768 维向量数据,Zilliz Cloud 稳定支持 Shulex VOC 业

日前,国际化 VOC SaaS 公司数里行间(Shulex)将上亿数据量的核心业务从开源向量数据库 Milvus 迁移至全托管的向量数据库云服务 Zilliz Cloud。 相比于 Milvus,Zilliz Cloud 实现了 Shulex VOC 评论分析洞察报告生成速度 30% 的提升…

AI 驱动的医疗变革:迈向未来医疗新生态

直面呼啸而来的人工智能,医疗行业将首当其冲,发生翻天覆地的变化。美国心脏病学家兼基因学教授埃里克托普在《未来医疗》中预测,未来人类将拥有“健康小助手”——个人医疗数据和处理能力,还能轻松预防疾病。诸多评论家也持类似观…