Python 单元测试

news/2025/2/13 2:52:38/

本篇为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.ppmy.cn/news/1381357.html

相关文章

【洛谷 P8781】[蓝桥杯 2022 省 B] 修剪灌木 题解(数学)

[蓝桥杯 2022 省 B] 修剪灌木 题目描述 爱丽丝要完成一项修剪灌木的工作。 有 N N N 棵灌木整齐的从左到右排成一排。爱丽丝在每天傍晩会修剪一棵灌木,让灌木的高度变为 0 0 0 厘米。爱丽丝修剪灌木的顺序是从最左侧的灌木开始,每天向右修剪一棵灌木…

2024年PHP伪协议详解

【2024年PHP伪协议详解】 嘿,亲爱的编程新手们!今天我们要一起探索PHP伪协议的奇妙世界。想象一下,PHP伪协议就像是一个神秘的传送门,能让我们在PHP的海洋中畅游无阻。准备好了吗?让我们开始这段冒险之旅吧&#xff01…

Install kali Linux(20240313)

内容:如题。 操作:分两步骤完成。 第一步、登录官网下载软件包/镜像包 Get Kali | Kali Linux 我期望选择使用虚拟机/U盘/容器的镜像包文件: 以virtual machines为例,进入页面 点击下载使用VMware版本的,2.9G&…

基于SpringBoot的“漫画之家”系统(源码+数据库+文档+PPT)

基于SpringBoot的“漫画之家”系统 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统首页界面图 用户注册界面图 漫画界面图 个人中心界面图 系统登录界面图 管理员功能界面图 …

Mybatis多表映射之一对多映射

上文总结了一对一关联关系中的映射方法。那么,如果存在一对多关系,又该定义映射关系呢? 1. 需求说明 假设目前存在顾客表与订单表,一个顾客与多个订单对应。因此,在顾客实体类中,应该有一个订单类型的lis…

高速USB3.0接口控制器芯片--T630

T630芯片是方寸微电子自主研发的USB3.0超高速控制器,具有功能丰富、性能强劲、扩展性强等特点,可广泛应用于视频采集卡、视频会议摄像头、监控摄像头、数字摄录机、工业照相机、测量和测试设备、医疗成像设备、打印机、扫描仪、指纹采集终端等众多电子产…

详细聊一聊vue2和vue3的区别在哪里

Vue 3相对于Vue 2有许多重要的改进和新增功能,主要区别如下: Vue.js 3 带来了许多新特性和改进,其中一些主要的新特性包括: Composition API: Vue 3 引入了 Composition API,这是一种新的组织组件代码的方式,可以更灵活地组织逻辑代码,将相关逻辑归类到一个功能性单元,…

1.Python是什么?——《跟老吕学Python编程》

1.Python是什么?——《跟老吕学Python编程》 Python是一种什么样的语言?Python的优点Python的缺点 Python发展历史Python的起源Python版本发展史 Python的价值学Python可以做什么职业?Python可以做什么应用? Python是一种什么样的…