新闻中心

Python单元测试怎么写_Python单元测试编写方法与实例

2025-11-10
浏览次数:
返回列表
使用unittest编写Python单元测试需创建继承自TestCase的类,测试方法以test_开头,通过断言方法验证逻辑。例如为calculator模块编写TestCalculator类,用assertEqual、assertRaises等方法测试加减乘除函数,确保正常与异常情况均被覆盖。命令行运行python test_calculator.py即可执行测试,-v参数显示详细结果。

python单元测试怎么写_python单元测试编写方法与实例

写Python单元测试主要用内置的unittest框架,也可以选择第三方库如pytest。这里以unittest为例,介绍编写方法和实际例子,帮助你快速上手。

1. 理解单元测试的基本结

unittest是Python标准库中的测试框架,基于类和方法组织测试。每个测试用例继承自unittest.TestCase,测试方法名必须以test_开头。

基本结构如下:

import unittest
<p>class TestMathFunctions(unittest.TestCase):
def test_addition(self):
self.assertEqual(2 + 2, 4)</p><p>if <strong>name</strong> == '<strong>main</strong>':
unittest.main()</p>

2. 编写被测函数和对应测试

假设我们有一个简单的计算器模块calculator.py

# calculator.py
def add(a, b):
    return a + b
<p>def subtract(a, b):
return a - b</p><p>def multiply(a, b):
return a * b</p><p>def divide(a, b):
if b == 0:
raise ValueError("Cannot divide by zero.")
return a / b</p>

接下来为它写测试文件test_calculator.py

# test_calculator.py
import unittest
from calculator import add, subtract, multiply, divide
<p>class TestCalculator(unittest.TestCase):</p>
                    <div class="aritcle_card">
                        <a class="aritcle_card_img" href="/ai/2423">
                            <img src="https://img.php.cn/upload/ai_manual/001/246/273/176481837537317.png" alt="千鹿Pr助手">
                        </a>
                        <div class="aritcle_card_info">
                            <a href="/ai/2423">千鹿Pr助手</a>
                            <p>智能Pr插件,融入众多AI功能和海量素材</p>
                            <div class="">
                                <img src="/static/images/card_xiazai.png" alt="千鹿Pr助手">
                                <span>128</span>
                            </div>
                        </div>
                        <a href="/ai/2423" class="aritcle_card_btn">
                            <span>查看详情</span>
                            <img src="/static/images/cardxiayige-3.png" alt="千鹿Pr助手">
                        </a>
                    </div>
                <pre class='brush:python;toolbar:false;'>def test_add(self):
    self.assertEqual(add(2, 3), 5)
    self.assertEqual(add(-1, 1), 0)
    self.assertEqual(add(0, 0), 0)

def test_subtract(self):
    self.assertEqual(subtract(5, 3), 2)
    self.assertEqual(subtract(0, 5), -5)

def test_multiply(self):
    self.assertEqual(multiply(3, 4), 12)
    self.assertEqual(multiply(-2, 3), -6)

def test_divide(self):
    self.assertEqual(divide(10, 2), 5)
    self.assertAlmostEqual(divide(7, 3), 2.333333, places=6)

def test_divide_by_zero(self):
    with self.assertRaises(ValueError):
        divide(10, 0)

if name == 'main': unittest.main()

3. 常用断言方法说明

TestCase类提供多种断言方法验证结果:

  • assertEqual(a, b):检查a是否等于b
  • assertNotEqual(a, b):检查a不等于b
  • assertTrue(x):检查x为真
  • assertFalse(x):检查x为假
  • assertIn(a, b):检查a在b中
  • assertIsInstance(obj, cls):检查对象是否为某类实例
  • assertRaises(exception):检查是否抛出指定异常
  • assertAlmostEqual(a, b):检查浮点数近似相等

4. 运行测试

在命令行执行测试文件:

python test_calculator.py

输出会显示运行了多少个测试,是否全部通过。如果某个测试失败,会指出具体哪一行出错。

加上参数-v可查看详细结果:

python test_calculator.py -v

基本上就这些。掌握结构、写好断言、覆盖正常和异常情况,就能写出有效的单元测试。

以上就是Python单元测试怎么写_Python单元测试编写方法与实例的详细内容,更多请关注其它相关文章!


# 中文网  # 飞车图标网站建设海报图  # 关键词排名优化薇鈊hao12006实力  # 企业seo总部  # 闲鱼关键词怎么排名低  # 大型网站建设费用情况  # 寻找网站建设哪家快  # 定兴网站推广  # 如何短视频营销商品推广  # 崇左模板网站建设  # seo优化排名的意思  # 解决问题  # python语言使用  # 相关文章  # 就能  # 加减乘除  # 加载  # 库中  # 如何使用  # 命令行  # 单元测试  # 标准库  # ai  # python 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: win11 Snap Layouts怎么用 Win11窗口布局与分屏多任务高效指南【必学】  Shopware订单对象中获取产品自定义字段的正确方法  解决J*aScript中重复选择项的确认对话框显示问题  汽水音乐在线解析 汽水音乐在线解析入口  百度浏览器字体显示异常偏小_百度浏览器字体渲染修复方案  高德地图怎么看全景照片_高德地图全景照片浏览教程  使用 Pandas 高效处理 .dat 文件:数据清洗与数值计算实战  机器学习中对数变换预测结果的反向还原  Tabulator表格中精确实现日期时间排序的指南  J*aScript map 迭代中检测空数组元素的有效方法  如何解决电商平台定制报价请求的“黑洞”问题,SprykerQuoteRequest模块助你提升客户体验与销售效率  Go语言JSON解析深度指南:动态访问与结构体映射实践  ArrayList与LinkedList核心操作的Big-O复杂度分析  照顾宝贝2小游戏免费秒玩入口  小红书商家版怎样在笔记嵌入商品卡路径_小红书商家版在笔记嵌入商品卡路径【挂载教程】  零跑汽车11月交付量达70327台 实现连续9个月正增长  Win11 USB传输速度慢怎么解决 Win11 USB驱动更新与设置  如何创建没有密码的Windows本地账户_跳过微软账户登录的技巧【教程】  企业名称高精度匹配:N-gram方法在结构相似性分析中的应用  Yandex官方入口网址 Yandex俄罗斯搜索引擎最新在线地址  C++的std::forward_list怎么用_C++ STL中单向链表容器的特点与应用  AI泡沫首次被“刺破”:GPU十年都无法存活!  《明末:渊虚之羽》设计师谈设计角色:那会刚毕业 充满激情  vivo云服务网页版登录 怎么登录vivo云服务网页版  Python自定义类排序:解决lambda键值访问TypeError的实践指南  Web Components中自定义开关组件状态同步的常见陷阱与解决方案  在Go语言中利用后缀数组处理多字符串:实现高效文本匹配与自动补全  QQ网页版官方账号入口 QQ网页版网页版登录指南  html怎么在cmd下运行php文件_cmd运行html中php文件方法【教程】  海量存储:机器视觉智能化的核心基石  理解J*aScript Promise的微任务队列与执行顺序  Excel函数批量查找替换超快方法_Excel用REPLACE和FIND函数秒级替换  如何高效处理PHP中的Excel数据导入导出?PortPHP/Spreadsheet助你轻松搞定!  俄罗斯Yandex免登录入口_Yandex搜索引擎官网一键直达  qq浏览器如何查看和导出已保存的密码 qq浏览器密码管理器数据备份教程  虚幻5科幻题材ARPG大作遭取消!本是《奇异人生》厂商新作  提升屏幕阅读器对“m”时间单位的播报准确性:HTML与CSS组合解决方案  J*a应用集成GitHub CLI与API认证指南  一加 14R 快充无反应_一加 14R 充电优化  解决Rails应用中内容错位与Turbo警告:meta标签误用导致富文本渲染异常  Win10桌面图标出现小盾牌怎么办 Win10去除UAC图标教程【解决】  html网页设计源代码怎么运行_运行html网页设计源代码步骤【指南】  Golang如何实现Web接口签名验证_Golang Web接口签名校验开发方法  电脑屏幕颜色不舒服怎么办_Windows夜间模式与色彩校准教程【护眼技巧】  探索高级语言到原生C/C++的转译:挑战与内存管理策略  支付宝如何设置安全保护_支付宝安全设置的全面教程  Go语言中高效处理x-www-form-urlencoded表单数据  c++中的const_cast和reinterpret_cast怎么用_c++四种类型转换  怎样把文件彻底粉碎无法恢复_Windows下安全删除敏感数据【隐私保护】  qq音乐在线播放入口_qq音乐电脑版登录链接 

搜索