python单元测试入门

编写基本的单元测试来验证代码的行为。
使用的库:unittest

单元测试框架

python的unittest库的基本单元测试框架可以表示为:

import unittest

class XXXTests(unittest.TestCase): # 第一个测试集
	@classmethod
	def setUpClass(self):
		...
		self.x, self.y = _get_xy() # example func

	def test_a(self): # 第一个单元测试
		...
	def test_b(self): # 第二个单元测试
		self.assertEqual(self.x, self.y)
		
class YYYTests(unittest.TestCase): # 第二个测试集
	...

if __name__ == '__main__':
	unittest.main()

简单来说,派生的每个TestCase子类,表示一个单元测试集,其中的每个test_xxx函数,都是一个单独的单元测试。

组织单元测试时,可以按照层级式的划分来进行。在单个文件中,单元测试有两个层级:TestCase类派生,以及TestCase下的test_xxx函数。unittest的单元测试对函数名有要求,必须以test_开头,才能被当作一个测试函数存在。每个单元测试内可以存在多个assert函数。

单元测试可以直接写在源码文件中,在if __name__ == '__main__':时调用unittest.main(),使得只有在main直接运行源码文件才会进行单元测试。此外,通过__all__变量也能进一步约束对源码文件的导入行为,通过from xxx import *的形式导入该源码文件时,只能使用__all__中的成员。

__all__ = ['UsefulClass']
class UsefulClass():
	def __init__()

### ---
# unittests
### ---
class ClassTests(unittest.TestCase):
	def test_UsefulClass():
		[some test code]

assert方法

在单元测试中,通过调用.assertXXX方法来自动验证某些关键信息。例如

# 输出形状
class ModelTests(unittest.TestCase):
	def test_asserts(self):
		x, y = get_xy()
		self.assertEqual(x, y)
		self.assertTrue(x==y)
		...

通常来讲,只要传入的参数有对应的重写运算符,就可以简单地调用.assertXXX方法来做验证。

使用单元测试检查深度学习组件的行为

可以通过简单检查输出shape的方法来测试深度学习组件的行为,例如

import torch
import torch.nn as nn
import unittest
from resnet50 import ResNet50

class ConvTests(unittest.TestCase):
	def test_Conv2d(self):
		B, C, H, W = 5, 128, 28, 28
		x = torch.rand((B, C, H, W))
		conv = nn.Conv2d(in_channels=C, out_channels=C*2, kernel_size=3, stride=2, padding=1)
		out = conv(x)
		self.assertEqual(out.shape, torch.Size([B, C*2, H//2, W//2]))
	def test_ResNet50(self):
		input = _get_input()
		model = ResNet50()
		out = model(input)
		self.assertEqual(out.shape, torch.Size([shape values]))

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

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

相关文章

【2024版】Microsoft Azure 管理员培训课程招生简章(8月有开班)

课程介绍 本课程专为希望深入了解和精通Microsoft Azure管理的IT专业人员设计。在为期三天的培训中,学员将全面学习如何管理Azure订阅,保护标识,配置虚拟网络,以及实现存储解决方案和虚拟机。此外,课程还涵盖了实现We…

传感器标定(一)摄像头内参标定

一、使用ROS进行手动标定安装 1、安装 image-view &usb_cam ⽤于驱动相机 sudo apt-get install ros-melodic-image-view sudo apt-get install ros-melodic-usb-cam2、查看系统视频设备 v4l2- ctl -d /dev/video0 --all 查询所有相机具体的参数包括width和height ls /…

Excel数据截取及合并多行多列数据

公式一:RIGHT(A2,LEN(A2)-FINDB(")",A2)) 公式二:PHONETIC(C2:D19) 详情可以看附件。

JMeter--定时执行的方法

原文网址:JMeter--定时执行的方法_IT利刃出鞘的博客-CSDN博客 简介 本文介绍JMeter如何使用定时器定时执行测试任务。 Java技术星球:way2j.com 方法 第一步:新建定时器 右键测试任务> Add > Timer> Constant Timer 如下图所示…

【python数据处理】— “2020-01-01 05:20:15“日期格式数据

文章目录 一、数据说明及目标二、实现方式1.提取date2.提取hour3.提取weekday4.提取month 一、数据说明及目标 数据说明 数据表有一列名为"datetime"表示时间数据,该列的数据格式是"2020-01-01 05:20:15"。 import pandas as pd datapd.read_e…

云动态摘要 2024-07-04

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新优惠与活动 数据库上云优选 阿里云 2024-07-04 RDS、PolarDB、Redis、MongoDB 全系产品新用户低至首年6折起! [免费体验]智能助手ChatBI上线 腾讯云 2024-07-02 基于混元大模型打造&…

搜维尔科技:【研究】Scalefit人体工程学测量系统为预防肌肉骨骼疾病提供生物力学分析

与工作相关的肌肉骨骼疾病(MSE)是工作生活中的一个持续的伴侣。总部位于科隆的Scaleit公司生产的移动生物力学测量系统Industrial Athlete有助于在工作场所立即发现疾病,伤害和损伤的原因。 Scalefit是一个跨学科网络的一部分,在德国科隆体育大学和职业…

【CT】LeetCode手撕—232. 用栈实现队列

目录 题目1- 思路2- 实现⭐232. 用栈实现队列——题解思路 3- ACM 实现 题目 原题连接:232. 用栈实现队列 1- 思路 思路 ① 用两个栈来实现队列,一个 in 入栈 和一个 out 出栈② push 入队:入栈逻辑:即将元素加入到 in 栈 里即…

spring6框架解析(by尚硅谷)

文章目录 spring61. 一些基本的概念、优势2. 入门案例实现maven聚合工程创建步骤分析实现过程 3. IoC(Inversion of Control)基于xml的bean环境搭建获取bean获取接口创建实现类依赖注入 setter注入 和 构造器注入原生方式的setter注入原生方式的构造器注…

Android studio开发入门教程详解(复习)

引言 本文为个人总结Android基础知识复习笔记。如有不妥之处,敬请指正。后续将持续更新更多知识点。 文章目录 引言UITextView文本基本用法实际应用常用属性和方法 Button按钮处理点击事件 EditText输入框基本属性高级特性 ImageView图片ImageView的缩放模式 Prog…

实战教程:如何用JavaScript构建一个功能强大的音乐播放器,兼容本地与在线资源

项目地址:Music Player App 作者:Reza Mehdikhanlou 视频地址:youtube 我将向您展示如何使用 javascript 编写音乐播放器。我们创建一个项目,您可以使用 javascript 从本地文件夹或任何 url 播放音频文件。 项目目录 assets 1…

图DFS遍历

DFS遍历图 伪代码 俩函数。 判断图有几个连通分支&#xff1f;就是图的遍历&#xff0c;dfs完了就给他 #include <iostream> #include <cstdlib> #include <bits/stdc.h> #include <vector> using namespace std; const int N102; int n,m,temp1,te…

Python学习笔记28:进阶篇(十七)常见标准库使用之质量控制中的代码质量与风格第二部分

前言 本文是根据python官方教程中标准库模块的介绍&#xff0c;自己查询资料并整理&#xff0c;编写代码示例做出的学习笔记。 根据模块知识&#xff0c;一次讲解单个或者多个模块的内容。 教程链接&#xff1a;https://docs.python.org/zh-cn/3/tutorial/index.html 质量控制…

面试篇-Redis-2+持久化+过期key删除+内存淘汰

文章目录 前言一、你知道Redis 数据是怎么持久化的1.1 Redis 持久化的方式Rdb&#xff1a;1.1.1 主动备份save 命令&#xff1a;1.1.2 Redis 中使用bgsave 进行Rdb 的持久化 &#xff1a; 1.2 Redis 持久化的方式Aof&#xff1a;1.2.1 使用AOF 模式进行数据存储&#xff1a;1.2…

数据库主从复制

目录 一.主从复制架构 二.主从复制原理 三.实现主从复制配置 1.新建主从复制 2.实战遇到问题 3.复制错误解决方法 4.级联 主从复制 5.半同步复制 MySQL数据库的主从复制&#xff08;Master-Slave Replication&#xff09;是一种常见的数据库复制架构&#xff0c;用于提…

越南宣称已成全球第二大手机出口国,富士康翻白眼,为啥限电?

日前越南媒体报道指越南今年前5个月的手机及零部件出口达到224亿美元&#xff0c;同比增长11%&#xff0c;超越印度&#xff0c;成为仅次于中国的全球第二大手机出口国&#xff0c;对此富士康、三星恐怕会有不同的意见。 为越南手机业务做出重要贡献的无疑是富士康、三星等企业…

2.2.1 ROS2案例以及案例分析

1.案例需求 需求1&#xff1a;编写话题通信实现&#xff0c;发布方以某个频率发布一段文本&#xff0c;订阅方订阅消息&#xff0c;并输出在终端。 需求2&#xff1a;编写话题通信实现&#xff0c;发布方以某个频率发布自定义接口消息&#xff0c;订阅方订阅消息&#xff0c;并…

1975react社区问答管理系统开发mysql数据库web结构node.js编程计算机网页源码

一、源码特点 react 社区问答管理系统是一套完善的完整信息管理类型系统&#xff0c;结合react.js框架和node.js后端完成本系统&#xff0c;对理解react node编程开发语言有帮助系统采用node框架&#xff08;前后端分离&#xff09;&#xff09;&#xff0c;系统具有完整的源…

什么是数字体验成熟度,以及数字成熟度的模型计算和实现方法

“开发成功的全渠道数字身份&#xff0c;并通过无缝的数字体验吸引广泛的受众。无论您身在何处&#xff0c;都可以加速数字化转型并促进业务增长。通过直观、全面的工具&#xff0c;并了解您个人的数字体验成熟度水平&#xff0c;超越不断增长的客户期望并超越竞争对手。今天就…