Python自动化测试:unittest与pytest框架

在Python中,unittestpytest都是常用的自动化测试框架。它们提供了编写测试用例、测试套件和执行测试的强大功能。

1. unittest框架

unittest是Python标准库的一部分,因此无需额外安装。它提供了丰富的断言方法,用于验证测试结果。

示例代码:
复制代码

python复制代码

|---|----------------------------------------------------|
| | import unittest |
| | |
| | class TestStringMethods(unittest.TestCase): |
| | |
| | def test_upper(self): |
| | self.assertEqual('foo'.upper(), 'FOO') |
| | |
| | def test_isalpha(self): |
| | self.assertTrue('foo'.isalpha()) |
| | self.assertFalse('foo123'.isalpha()) |
| | |
| | def test_split(self): |
| | s = 'hello world' |
| | self.assertEqual(s.split(), ['hello', 'world']) |
| | # 使用断言检查列表长度 |
| | with self.assertRaises(ValueError): |
| | s.split(maxsplit=1) |
| | |
| | if __name__ == '__main__': |
| | unittest.main() |

在这个示例中,我们定义了一个名为TestStringMethods的测试类,其中包含三个测试方法。每个测试方法都以test_开头,这是unittest的一个约定。assertEqualassertTrue是断言方法,用于验证预期结果与实际结果是否一致。

2. pytest框架

pytest是一个更简洁、更易于使用的测试框架。它不需要继承任何基类或编写特定的测试方法。

示例代码:

首先,确保你已经安装了pytest

复制代码

bash复制代码

|---|----------------------|
| | pip install pytest |

然后,创建一个名为test_example.py的测试文件,并编写以下代码:

复制代码

python复制代码

|---|-----------------------------------|
| | def add(x, y): |
| | return x + y |
| | |
| | def test_add(): |
| | assert add(1, 2) == 3 |
| | assert add(0, 0) == 0 |
| | with pytest.raises(TypeError): |
| | add(1, '2') |
| | |
| | def test_subtract(): |
| | assert add(5, -3) == 2 |

在这个示例中,我们定义了一个简单的add函数,然后创建了两个测试函数test_addtest_subtract。每个测试函数都以test_开头,这是pytest的一个约定。assert语句用于验证预期结果与实际结果是否一致。如果assert语句失败,测试将被视为失败。

要运行这些测试,请在命令行中导航到包含测试文件的目录,并执行以下命令:

复制代码

bash复制代码

|---|----------|
| | pytest |

pytest将自动查找并执行所有以test_开头的函数。如果所有测试都通过,则不会显示任何输出。如果有测试失败,pytest`将显示失败的详细信息。

相关推荐
志尊宝5 分钟前
Vue3 零基础每日笔记(026):emit 子传父——defineEmits 与事件校验
前端·javascript·html·vue3
ElfBoard7 分钟前
作品展示|基于RK3588的复杂空间下自主导航无人机与多传感器 AI 融合环境监测分析
大数据·人工智能·单片机·嵌入式硬件·团队开发
statistican_ABin12 分钟前
中国互联网与数字生活分析报告—基于1990-2023年世界银行互联网数据的多维度分析
python
风骏时光牛马13 分钟前
6个高频实用技术脚本案例,覆盖运维与办公自动化(可直接复用)
前端
野生技术架构师14 分钟前
1200 道 JAVA 面试题(各大企业常见面试题及答案)
java·开发语言
远航计算机22 分钟前
GEO 选题从哪来?用一份 Query 词库把一年内容排出来
大数据·人工智能·算法·aigc
“AI国潮设计-小江”24 分钟前
【Python/SDXL实战】潮汕国潮IP视觉落地:普宁美食猫IP & 创意甜品设计(附ComfyUI工作流思路)
开发语言·人工智能·python·prompt·aigc
爱吃红星柚28 分钟前
【学习】Elpis 抽离与发布 npm 包
前端·前端框架·node.js
Leon-Ning Liu36 分钟前
Oracle 19c ASMB 进程 PGA 内存泄漏排查实战 (Bug 38610635)
数据库·oracle
步行cgn38 分钟前
Spring 注入 null 和空字符串详解
数据库·spring·oracle