python学习笔记(九)—— 单元测试

python单元测试怎么写_python--单元测试 1.单元测试是什么?单元测试(又称为模块测试, Unit Testing)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。单元测试粒度最小,一般由开发人员采用白盒方式来测试,主要测试单元是否符合设计。单元测试... 阅读详情

运行测试用例时,每完成一个单元测试,Python都打印一个字符:测试通过时打印一个句点;测试引发错误时打印一个E;测试导致断言失败时打印一个F。

 

测试函数

先定义一个获取姓名的函数,存储为name_function.py。

def get_formatted_name(first,last,middle=''):
	if middle:
		full_name = first + ' ' + middle + ' ' +last
	else:
		full_name = first + ' ' + last
	return full_name.title()

编写一个使用get_formatted_name()函数的程序name.py,证明这个函数可以像期望的那样工作。

from name_function import get_formatted_name
print("Enter 'q' at any time to quit.")
while True:
	first = input("\nPlease give me a first name: ")
	if first == 'q':
		break
	last = input("Please give me a last name: ")
	if last == 'q':
		break
	formatted_name = get_formatted_name(first,last)
	print("\tNeatly formated name : " + formatted_name + ".")

创建测试用例,test_name_function.py,测试get_formatted_name()在给定名和姓时能否正确的工作。

#针对单个函数的测试
import unittest
from name_function import get_formatted_name

#必须继承unittest.TestCase类
class NameTestCase(unittest.TestCase):
	"""测试name_function.py,方法名必须以test打头"""
	def test_first_last_name(self):
		"""能够正确处理像Jains Joplin这样的姓名吗?"""
		formatted_name = get_formatted_name('jains','joplin')
		#print(formatted_name)
		"""断言"""
		self.assertEqual(formatted_name,'Jains Joplin')
	def test_first_last_middle_name(self):
		formatted_name = get_formatted_name('wolfgang','mozart','amadeus')
		self.assertEqual(formatted_name,'Wolfgang Amadeus Mozart')

unittest.main()

测试类

先定义一个类,存为survey.py。

class AnonymousSurvey():
	"""收集匿名调查问卷的答案"""
	def __init__(self,question):
		"""存储一个问题,并未存储答案做准备"""
		self.question = question
		self.responses = []
	def show_question(self):
		"""显示调查问卷"""
		print(self.question)
	def store_response(self,response):
		"""存储单份调查答卷"""
		self.responses.append(response)
	def show_results(self):
		"""显示收集到的所有答卷"""
		print("Survey results:")
		for response in self.responses:
			print('-' + response)

编写一个使用AnonymousSurvey()类的程序language_survey.py,证明这个类可以像期望的那样工作。

from survey import AnonymousSurvey
#定义一个问题,并创建一个表示调查的AnonymousSurvey对象
question = "What language did you first learn to speak?"
my_survey = AnonymousSurvey(question)
#显示问题并存储答案
my_survey.show_question()
print ("Enter 'q' at any time to quit.\n")
while True:
    response = input("Language: ")
    if response == 'q':
        break
    my_survey.store_response(response)
#显示调查结果
print("\nThank you to everyone who participated in the survey!")
my_survey.show_results()

创建测试用例,test_survey.py,测试AnonymousSurvey()类能否正确的工作。

#测试AnonymousSurvey类
#测试如果用户面对调查问题时只提供了一个答案,这个答案能被妥善的存储
import unittest
from survey import AnonymousSurvey
class TestAnonymousSurvey(unittest.TestCase):
    """针对AnonymousSurvey类的测试"""
    def test_store_single_response(self):
        """测试单个答案会被妥善的存储"""
        question = "What language did you first learn to speak?"
        my_survey = AnonymousSurvey(question)
        my_survey.store_response('Chinese')
        self.assertIn('Chinese',my_survey.responses)
    def test_store_three_response(self):
        """测试3个答案会被妥善的存储"""
        question = "What language did you first learn to speak?"
        my_survey = AnonymousSurvey(question)
        responses = ['English','Spanish','Chinese']
        for response in responses:
            my_survey.store_response(response)
        for response in responses:
            self.assertIn(response,my_survey.responses)     
unittest.main()

使用方法setUp()。只需创建对象一次,但在每个测试方法中都可使用它们

#使用setUp()方法简化上面的代码,创建一个调查对象和一组答案,供方法test_store_single_response()和test_store_three_response()使用
import unittest
from survey import AnonymousSurvey
class TestAnonymousSurvey(unittest.TestCase):
    """针对AnonymousSurvey类的测试"""
    def setUp(self):
        """创建一个调查对象和一组答案,供使用的测试方法使用"""
        question = "What language did you first learn to speak?"
        self.my_survey =  AnonymousSurvey(question)
        self.responses = ['English','Spanish','Chinese']
    def test_store_single_response(self):
        """测试单个答案会被妥善的存储"""
        self.my_survey.store_response(self.responses[0])
        self.assertIn(self.responses[0],self.my_survey.responses)
    def test_store_three_response(self):
        """测试3个答案会被妥善的存储"""
        for response in self.responses:
            self.my_survey.store_response(response)
        for response in self.responses:
            self.assertIn(response,self.my_survey.responses)    
unittest.main()

 

Python:Unittest单元测试框架 ​单元测试 1、单元测试(unit testing),是指对软件中的最小可测试代码单元进行检查和验证 ⑴是针对于代码的一种测试方法,测试的是代码 2、对于"代码单元"中单元的含义,一般来说,要根据实际情况去判定其具体含义: ⑴如C语言中单元指一个函数、Java里单元指一个类、图形化的软件中可以指一个窗口或一个菜单等 ⑵单元可以是一个函数、方法、类、功能模块或者子系统 ⑶总的来说,单元就是人为规定的最小的被测功能模块 3、单元测试针对的是每一个独立的代码单元,代码单元应不... 阅读详情

相关推荐

Ubuntu双系统开机黑屏?3分钟搞定NVIDIA显卡驱动冲突(18.04/20.04实测有效)

本文详细解决Ubuntu双系统开机黑屏问题,特别是由NVIDIA显卡驱动冲突引起的故障。提供从临时进入系统到永久安装专有驱动的完整方案,适用于Ubuntu18.04/20.04用户,帮助快速恢复系统并优化显卡性能。

resnet7explorer的博客 309

Python从入门到实践 学习笔记4

1.文件读取文本文件时,Python将其中的所有文本都解读为字符串。如果读取的是数,并要将其作为数值使用,必须使用函数int()将其转化为整数或使用函数float()将其转化为浮点数。 2.测试函数方法名必须以test_打头,这样它才会在我们运行test_name_function.py时自动运行。 3.测试类unittest模块中的断言方法unittest.Testcase类包含的方法setUp()让我们只需创建这些对象一次,就能在每个测试方法中使用。 2022/7/7 Python基础知识止......

llvyeriji的博客 269

(一篇即成功)Ubuntu下搭建qt环境和安装Qt Creator

只需一篇就成功搭建Ubuntu下的QT环境 你还在等什么

m0_73450461的博客 1万+

python入门_day11_Chap11_测试函数和测试类

11.1 测试函数 首先编写待会儿进行测试的代码。 下面是一个简单的函数,它接受名和姓并返回整洁的姓名: name_function.py def get_formatted_name(first,last): full_name=first+' '+last return full_name.title() names.py #从name_function.py中导入get_f...

weixin_44092937的博客 375

Latex参考文献中大写字母编译后自动变成了小写,如何保持原字母大写形式

bib文件参考文献中大写自动变为小写,如何保持原大写问题。Latex: 保持参考文献大小写,overleaf文献编译后,原大写字母自动变成了小写字母,如何保持原字母大写

我的个人博客 5805

【雷达成像】基于matlab SAR雷达成像仿真【含Matlab源码 3750期】

SAR雷达成像仿真 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 1084

《重构 改善既有代码的设计》 读书笔记(十五)

第四章 构筑测试体系 如果你是第一次看我这个《重构 改善既有代码的设计》 读书笔记系列,那么我建议你不要一开始看这一节,因为它的确的确很无聊。 可靠的测试是安全重构的前提。 4.1 自测试代码的价值 一套测试就是一个强大的BUG侦测器,能够大大缩短查找BUG所需要的时间。 但我们都很懂,编写测试代码,意味着额外的时间,额外的精力,除非真正地感受到这种方法对编程速度的提升,否则自我测试是没有意义的。(体现不出它的意义) 在通常情况下,我们的测试是手动运行的,如果测试变得自动化,能够自动告诉错误出现在哪里

NewReErWen的博客 449

【CanMV K210】AI 视觉 MNIST 手写数字识别与分类推理

本文介绍了基于CanMV K210开发板的MNIST手写数字识别实验。实验通过摄像头采集图像,经过开窗、灰度化、缩放、反色等预处理后,使用KPU神经网络加速器运行MNIST分类模型,最终在LCD上显示识别结果。重点讲解了分类模型与检测模型的区别、图像预处理流程以及KPU推理结果的解析方法。实验帮助理解从图像采集到分类输出的完整AI视觉处理链路,并提供了调试思路和硬件连接说明。

Mr数据杨 364

return两个返回值_函数(三)—— 返回值

函数并不只是可以显示或者打印信息,它可以像一个公式一样根据输入值得出输出值,也就是说它可以处理一些数据,并返回一个或一组值。函数返回的值被称为返回值。在函数中,可使用return语句将函数的返回值返回到调用函数的代码行。1. 返回简单值下面来看一个函数,它接受名和姓并返回完整的姓名:formatted_name.py①def get_formatted_name(firs...

weixin_39744408的博客 2307

博途PLC如何建立与笔记本电脑端的连接?(新手必会)

对S7-1500PLC下载硬件组态或程序,需要建立PC与PLC的连接。 由于S7-1500CPU都具有PN端口,因此建立PC与S7-1500PLC的连接通常使用工业以太网来实现。 1.使用网线连接PC-PLC 使用网线,一端连接PC的以太网卡端口,另一端连接S7-1500CPU的PN端口。 2.设置本机IP地址 2.1 确认本机要设置的IP地址段 本机IP地址要和PLC程序组态IP地址段前三位保持一致,后一位使用组态中没有用到的IP地址段。如下图所示。 那么看了这个图片应该就知道了,地址应该设置成192.

weixin_42430971的博客 1万+

机器人学(三):手眼标定

主要讲了eye-to-hand的手眼标定求解算法,包括AX=XB和AX=YB两种情况,包含SVD法、Tsai-Lenz法、最小二乘法等,从原理到解法再到算法代码实现,包括matlab代码、C++代码、库的使用等,简单明了,容易在实际项目中进行应用

行者无疆的博客 2554

Python匿名调查并测试类(unittest)

class AnonymousSurvey: #收集匿名调查问卷的答案 def __init__(self,question): self.question=question self.responses=[]#空列表,实例座位属性 def show_question(self): #显示调查问卷 print(self.question) def store_response(self,new_response): .

qq_63128704的博客 410

西门子V90伺服——章节0、西门子V90章节总述

格式规范:西门子V90伺服——章节1、产品介绍(1、伺服系统初步介绍)@[TOC](西门子V90伺服——章节1、产品介绍)课时1伺服系统初步介绍(1)课时2 伺服系统初步介绍(2)课时3 运动控制基础(1)课时4 运动控制基础(2)课时5 产品概览课时6 相关选件课时7 控制模式介绍(1)课时8 控制模式介绍(2)课时9 产品选型课时10 调试工具及相关资料介绍。

大小曲奇的博客 123

python学习笔记(九) glob模块、单元测试框架、单元测试生成报告、单元测试生成漂亮报告、parameterized循环遍历单元测试方法、查找测试用例...

1.glob模块 #glob文件查找模块,返回的文件名只包括当前目录里的文件名,不包括子文件夹里的文件 import glob g = glob.glob('*.py')#获取当前目录下以*.py结尾的文件 for filename in g: print(filename) 测试结果: 单元测试框架.py 单元测试框架2.py g = ...

aidou5451的博客 296

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Python 单元测试详解

作者:yukkizhang,腾讯 CSIG 测试工程师本文直接从常用的 Python 单元测试框架出发,分别对几种框架进行了简单的介绍和小结,然后介绍了 Mock 的框架,以及测试报告生成...

腾讯技术工程 8588

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

用Python进行单元测试

Python编程语言,不仅仅在机器学习、数据分析等领域大放异彩,在web开发中等软件开发中,使用者也越来越多。 在软件开发中,有一种被提倡的开发范式:测试驱动开发。在这种开发范式中,编写单元测试是必不可少的。如果不实施严格的测试驱动开发,编写单元测试程序也是必要的。 对于单元测试而言,最基本的模块是pytest,在本文中会对这个模块给予简要介绍。此外,还有一个现在很流行的模块fizz buzz,本文也会向读者推荐。 为什么要自动化测试 并非所有人都理解自动化测试的必要性,有人甚至认为纯粹是个负担,他们认为

计算机科学、人工智能、数据分析和大数据方向的研发和教学。 4889

Python单元测试

Python单元测试

summerriver1的博客 2105

【Python单元测试】学习笔记1

用来验证一小段代码(单元)的正确性,例如只测试某个函数写的是否正确可以快速执行在独立的环境中执行在测试之前或者之后执行的函数或者方法被称之为Test Fixtures比如:在测试前需要先连接数据库,在测试后需要断开与数据建库的连接。

码农努力学习 1012

【Python】Python代码的单元测试

完整性的手段,是测试效果衡量的标准,是测试技术有效性的度量: 覆盖率 = (至少被执行一次的项目(item)数) / (项目的总数)逻辑检查:给定正确的、符合预期的输入,系统是否能够执行正确的计算并遵循通过代码正确的路径?作用:可以确保程序模块是否否和我们规范的输出,保证该模块经过修改后仍然是满足我们的需求。面向对象的检查:如果通过运行代码更改任何持久对象的状态,则该对象是否正确更新?将我们常规用到的测试场景封装了以下断言方法,根据测试所需要的场景进行引用。在实际的测试中可能同时存在多个前置相同的测试,

Python、Golang、大数据 3097

python单元测试知识总结

开发人员最讨厌的东西除了编写文档外,估计就是写测试用例了。 由于任务需求,需要搭建python的单元测试框架,并编写测试用例。但之前几乎没有接触过,所了解的也就只有自带的unittest框架了。 经过一段时间的研究,发现python的测试生态挺优秀的,个人记性也不好,因此记录下来,供自己和网友学习回顾。 单元测试,是个老生常谈的问题。我们都知道python自带了unittest框架,支持单元测...

我的玩具熊呢 4378

Python 单元测试

文章目录什么是单元测试为什么要写单元测试何时进行单元测试如何保证单元测试的隔离性Python 单元测试相关包例子参考链接 软件测试即是一种实际输出与预期输出间的审核或者比较过程 什么是单元测试 什么是单元 代码逻辑中的最小可复用部分:类、函数等 单元测试的目标 详细验证所有(一般以代码覆盖率为指标)实现代码的执行逻辑,尤其是各种边界条件 为什么要写单元测试 程序单元作为应用的最小可...

MLee 的博客 747

python 单元测试_【Python学习笔记】51、单元测试

如果你听说过“测试驱动开发”(TDD:Test-Driven Development),单元测试就不陌生。单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。比如对函数abs(),我们可以编写出以下几个测试用例:输入正数,比如1、1.2、0.99,期待返回值与输入相同;输入负数,比如-1、-1.2、-0.99,期待返回值与输入相反;输入0,期待返回0;输入非数值类型,...

weixin_39552538的博客 76

在 python 中进行单元测试

单元测试(unit test)就是编写测试来验证某一模块的功能正确性。一般会指定输入,验证输出是否符合预期。 单元测试 进行单元测试,首先要导入 unittest 库。 import unittest 先写一个功能函数,这里以完成加法为例,完成两个数的加法。 def add(a, b): return a + b 为了验证加法函数的功能是否正确,首先创建一个 TestAdd 类,继承类 unittest.TestCase,然后在这个类中定义相应的测试函数 test_add(),测试函数要以 test

算法笨蛋 8174
上一篇: python学习笔记(八)—— json.dump()和json.load()
下一篇: 三元运算符
fighting_jun
博客等级 码龄11年 2粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值