首页 > 编程语言 >python:单元测试

python:单元测试

时间:2024-12-16 14:56:52浏览次数:5  
标签:断言 python self 单元测试 add test unittest

在Python编程中,单元测试是确保代码按预期工作的关键步骤之一。单元测试是指对代码中的最小可测试单元(通常是函数或方法)进行隔离测试,以验证其行为是否符合预期。Python有一个内置的单元测试框架,名为unittest,它提供了编写和运行测试所需的所有工具。

使用unittest编写单元测试

以下是一个简单的示例,展示了如何使用unittest框架编写和运行单元测试:


python复制代码

import unittest
# 假设这是你要测试的代码
def add(a, b):
return a + b
def subtract(a, b):
return a - b
# 这是你的单元测试类
class TestMathFunctions(unittest.TestCase):
def test_add(self):
self.assertEqual(add(1, 2), 3) # 断言add(1, 2)的结果应该是3
self.assertEqual(add(-1, 1), 0) # 断言add(-1, 1)的结果应该是0
self.assertNotEqual(add(1, 1), 3) # 断言add(1, 1)的结果不应该是3
def test_subtract(self):
self.assertEqual(subtract(10, 5), 5) # 断言subtract(10, 5)的结果应该是5
self.assertEqual(subtract(-1, 1), -2) # 断言subtract(-1, 1)的结果应该是-2
# 运行测试
if __name__ == '__main__':
unittest.main()

运行单元测试

将上述代码保存为一个Python文件(例如test_math.py),然后在命令行中运行它:


bash复制代码

python test_math.py

unittest.main()函数会查找当前模块中所有继承自unittest.TestCase的子类,并自动运行它们中的所有测试方法(方法名以test_开头)。

断言方法

unittest框架提供了一系列断言方法,用于在测试中验证条件是否成立。如果条件不成立,测试将失败并抛出一个异常。常用的断言方法包括:

  • self.assertEqual(a, b): 断言ab相等。
  • self.assertNotEqual(a, b): 断言ab不相等。
  • self.assertTrue(x): 断言x为True。
  • self.assertFalse(x): 断言x为False。
  • self.assertIsNone(x): 断言x为None。
  • self.assertIsNotNone(x): 断言x不为None。
  • self.assertIn(a, b): 断言ab的子集或元素(适用于列表、字符串等)。
  • self.assertNotIn(a, b): 断言a不是b的子集或元素。

组织测试代码

通常,测试代码应该与被测试的代码分开,放在单独的测试文件中。测试文件的命名约定通常是以test_开头,后跟被测试模块或功能的名称。例如,如果有一个名为math_operations.py的模块,那么测试文件可能命名为test_math_operations.py

使用setUptearDown方法

如果你需要在每个测试方法之前或之后执行一些代码(例如,设置测试环境或清理资源),可以使用setUptearDown方法:


python复制代码

class TestSomething(unittest.TestCase):
def setUp(self):
# 在每个测试方法之前运行
pass
def tearDown(self):
# 在每个测试方法之后运行
pass
def test_something(self):
# 你的测试代码
pass

使用setUpClasstearDownClass方法(类级别)

如果你需要在所有测试方法之前或之后只执行一次代码(例如,连接数据库或启动服务器),可以使用@classmethod装饰器来定义setUpClasstearDownClass方法:


python复制代码

class TestSomethingElse(unittest.TestCase):
@classmethod
def setUpClass(cls):
# 在所有测试方法之前运行一次
pass
@classmethod
def tearDownClass(cls):
# 在所有测试方法之后运行一次
pass
def test_something_else(self):
# 你的测试代码
pass

通过编写和运行单元测试,你可以确保你的代码在更改后仍然按预期工作,并减少在项目中引入新错误的风险。

标签:断言,python,self,单元测试,add,test,unittest
From: https://blog.csdn.net/2301_78045723/article/details/144508896

相关文章

  • python面向对象编程:继承和多态
    在Python的面向对象编程(OOP)中,获取对象的信息通常涉及访问对象的属性和方法。以下是一些常见的方法和技巧,用于获取和检查对象的信息:访问对象的属性:你可以直接使用点符号访问对象的属性。python复制代码classPerson:def__init__(self,name,age):self.name=nameself.a......
  • python 的GUI封装
    python的GUI封装功能扩展点进度条控件:增加对ttk.Progressbar的支持,用于展示进度。列表框控件:提供Listbox的创建方法,用于展示和选择多项数据。复选框和单选按钮:Checkbutton和Radiobutton控件的支持。画布和图形支持:提供Canvas控件,用于绘制图形或复杂的......
  • 基于django的python校园用车管理系统校车使用记录(源码+文档+运行视频+讲解视频)
     文章目录系列文章目录前言一、开发介绍二、详细视频演示三、项目部分实现截图四、系统测试五、代码参考源码获取目的摘要:基于Django的Python校园用车管理系统为学校的校车管理提供了便捷的工具。该系统借助Django框架的稳定性和Python语言的高效性,实现了校......
  • 基于django的python图书馆管理系统图书借阅归还续借逾期罚金缴纳(源码+文档+运行视频+
     文章目录系列文章目录前言一、开发介绍二、详细视频演示三、项目部分实现截图四、系统测试五、代码参考源码获取目的摘要:基于Django的Python图书馆管理系统为图书馆的管理和服务提供了全面的解决方案。该系统通过Django框架的高效性和Python语言的灵活性,实......
  • 最新 Python 爬虫利器!
    Python上有一个非常著名的HTTP库——requests,相比大家都听说过,用过的人都说好!现在requests库的作者又发布了一个新库,叫做requests-html,看名字也能猜出来,这是一个解析HTML的库,而且用起来和requests一样爽!安装安装requests-html非常简单,一行命令即可做到。需要注意一点就是,req......
  • python毕设 陕西非物质文化遗产网站论文+程序
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景在国内,对于非物质文化遗产的保护与传承研究多集中在政策、传统保护方式等方面。关于借助网站等数字化手段对特定地区(如陕西)非物质文化......
  • 【Python】题库数据导出成Word文档
     需求场景:从题库解析的导入的数据,现在又需要导出成Word文档 数据库表结构:CREATETABLE`trn_ex_qabank`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'主键',`qa_type`char(1)NOTNULLCOMMENT'考题类型',`qa_subject`textNOTNULLCOMMENT'考题题目',......
  • 零基础学习人工智能—Python—Pytorch学习(十二)
    前言本文介绍使用神经网络进行实战。使用的代码是《零基础学习人工智能—Python—Pytorch学习(九)》里的代码。代码实现mudule定义首先我们自定义一个module,创建一个torch_test17_Model.py文件(这个module要单独用个py文件定义),如下:importtorch.nnasnnimporttorch.nn.fun......
  • 使用 Python 进行验证码图片识别
    首先,我们需要安装以下Python库:Pillow:用于图像处理。pytesseract:用于OCR(文字识别)。安装依赖你可以通过以下命令来安装必要的库:更多内容访问ttocr.com或联系1436423940bashpipinstallpillowpytesseract此外,pytesseract依赖于TesseractOCR引擎,确保你已经安装了Tess......
  • Python球球大作战
    系列文章序号直达链接表白系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4Python李峋同款可写字版跳动的爱心5Python流星雨代码6Python漂浮爱心代码7Python爱心光波代码8Python普通的玫瑰花代码9Python炫酷的玫瑰花代码10Python......