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 mySub


class 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 = name
        self.age = age

    def get_age(self):
        return self.age

 

创建测试文件

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

示例如下:

import unittest
from Person import Person

class 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: sum

    example:
    >>> print(mySum(1, 2))
    3

    '''

    return x + y

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

进行测试

示例如下:

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

效果如下:

总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

为什么选择线上展览馆,搭建线上展览馆要注意什么

引言: 线上展览馆是一种利用互联网技术,将实体展览馆的展示内容以数字化形式呈现出来的在线观展方式。它打破了时间和空间的限制,使得更多的人可以随时随地参观展览,领略文化的魅力。 一、线上展览馆的优势 1.成本效益高&#x…

【安卓】Android开发入门 你的第一个apk应用

本文介绍如何写一个入门的安卓apk应用, 以嵌套一个网页为例。 开发ide:Android studio 语言:Kotlin tips: 最好别下载新版本的 Android studio ,因为新版的界面有所改动 遇到问题去网上搜 新手刚入门可能界面都找不到在哪里;其次…

05-延迟任务精准发布文章-黑马头条

延迟任务精准发布文章 1)文章定时发布 2)延迟任务概述 2.1)什么是延迟任务 定时任务:有固定周期的,有明确的触发时间延迟队列:没有固定的开始时间,它常常是由一个事件触发的,而在这个事件触发之后的一段时间内触发…

银河麒麟V10SP3操作系统-网络时间配置

1、动态网络配置 打开终端,以网口 eth0 为例: nmcli conn add connection.id eth0-dhcp type ether ifname eth0 ipv4.method auto其中“eth0-dhcp”为连接的名字,可以根据自己的需要命名方便记忆和操作 的名字;“ifname eth0”…

Realsense 相机SDK学习(一)——librealsense使用方法及bug解决(不使用Ros)

一.介绍 realsense相机是一个intel开发出来的一款深度相机,我之前使用他来跑过slam,也配置过他的驱动,在此附上realsense的相机驱动安装方法:Ubuntu20.04安装Intelrealsense相机驱动(涉及Linux内核降级) …

redis-操作数据库

0 序言 一个Redis服务器可以包含多个数据库。在默认情况下,Redis服务器在启动时将会创建16个数据库:这些数据库都使用号码进行标识,其中第一个数据库为0号数据库,第二个数据库为1号数据库,而第三个数据库则为2号数据库…

Leetcode101对称的二叉树

如何去检查对称? 思路是check(n1->left,n2->right)&&check(n1->right,n2->left) 直接手算这题,该懂就懂了! /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* Tre…

【一】【设计模式】类关系UML图

1. 继承(Generalization) 继承是对象间的一种层次关系,允许子类继承并扩展父类的功能。 UML线:带有空心箭头的直线,箭头指向基类(父类)。 class Parent {public void parentMethod() {System.…

Python网络基础爬虫-python基本语法

文章目录 逻辑语句if,else,elifforwhile异常处理 函数与类defpassclass 逻辑语句 熟悉C/C语言的人们可能很希望Python提供switch语句,但Python中并没有这个关键词,也没有这个语句结构。但是可以通过if-elif-elif-…这样的结构代替,或者使用字…

哈密顿算子的计算公式及一些常用公式总结

目录 哈密顿算子的定义式如下: 梯度定义: 散度定义: 旋度定义: 常用的一些公式: 注意文中字母上面没有→的是标量,有→的都表示矢量 哈密顿算子的定义式如下: 快速了解哈密顿算符&#xff…

同步整流芯片 支持12V降5V 24V降5V 24V降12V 降压芯片 H4122

惠海H4122降压恒压芯片的工作原理: 主要是通过内部电路和算法来控制和调节输出电压,使其保持恒定。 输入电压:芯片接收一个较高的输入电压,如12V、24V或36V。 开关电源转换器:芯片内部通常包含一个或多个开关电源转…

Linux 安装Nginx (Nginx-1.25.4)

一、下载Nginx安装包 1.服务器联网的情况下,使用wget命令把Nginx安装包下载到/usr/local/目录中,如果没有wget命令,需要先安装:yum install -y wget cd /usr/local wget -c https://nginx.org/download/nginx-1.25.4.tar.gz ng…

Kanebo HITECLOTH 高科技擦镜布介绍

Kanebo HITECLOTH,这款由日本KBSeiren公司制造的高科技擦镜布,以其卓越的清洁能力和超柔软的布质,成为了市场上备受瞩目的产品。 材质与特性 HITECLOTH采用0.1旦尼尔特级高级微纤维制造,质地细致、坚韧、不起颗粒。这种纤维的特…

基于单片机的PM2.5浓度检测及报警系统设计与实现

基于单片机的PM2.5浓度检测及报警系统设计与实现 II 摘 要 II Abstract III 第一章 前言 1 1.1、设计的目的和意义 1 1.2、设计的发展趋势及国内外现状 2 第二章 主要元器件选择 4 2.1、AT89C51单片机 4 2.3、A/D转换芯片ADC0832 8 2.4、LCD1602液晶显示屏 10 第三章 设计各模…

TOUGH软件教程

原文链接:TOUGH软件教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247597252&idx6&sna9da64e502f070dcc37f9a93dd2a017b&chksmfa823d23cdf5b435996a4a7ebbed78211e81290c37138bcace1f4156f6588af829008381bc16&token1065483158&…

RocketMQ为什么这么快?我从源码中扒出了10大原因!

RocketMQ作为阿里开源的消息中间件,深受广大开发者的喜爱 而这其中一个很重要原因就是,它处理消息和拉取消息的速度非常快 那么,问题来了,RocketMQ为什么这么快呢? 接下来,我将从以下10个方面来探讨一下…

面试经典-11-接雨水

题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,…

为什么GPU对于人工智能如此重要?

GPU在人工智能中相当于稀土金属,甚至黄金,它们在当今生成式人工智能时代中的作用不可或缺。那么,为什么GPU在人工智能发展中如此重要呢? GPU概述 什么是GPU 图形处理器(GPU)是一种通常用于进行快速数学计…

基于YOLOv8深度学习的野外火焰烟雾检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

腾讯云轻量应用服务器地域选哪个合适?有啥区别?

腾讯云轻量应用服务器地域如何选择?地域就近选择,北方选北京地域、南方选广州地域,华东地区选上海地域。广州上海北京地域有什么区别?哪个好?区别就是城市地理位置不同,其他的差不多,不区分好坏…