1️⃣ 设计理念
➡️ unittest :
是 Python 标准库的一部分,设计灵感来自 Java 的 JUnit,强调面向对象的测试模式。
测试用例需要继承 unittest.TestCase 类,测试方法以 test_ 开头。
更适合传统、结构化的测试开发方式。
⭕ pytest :
是一个第三方测试框架,设计上更灵活,更注重简洁性和易用性。
不需要继承特定类,也不强制使用特定的命名规则,测试函数可以直接用普通函数定义。
支持更丰富的插件生态,可以扩展更多功能。
2️⃣ 使用方式
➡️ unittest :
测试用例组织在类中,每个测试方法必须以 test_ 开头。
使用内置的断言方法(如 assertEqual 等)。
需要手动运行测试用例,通常通过 unittest.main() 。
⭕ pytest :
测试用例通常以普通函数形式定义,函数名以 test_ 开头。
支持直接使用 Python 的内置断言,更简洁直观。
提供命令行工具 pytest ,运行测试更方便。
3️⃣ 功能特性
➡️ unittest :
功能较为基础,主要用于简单的单元测试。
提供了测试用例、测试套件、测试启动器等基本组件。
扩展性有限,但可以通过第三方库增强功能。
⭕ pytest :
提供了丰富的内置功能,如参数化测试、自动发现测试用例、丰富的断言支持。
支持 fixtures(测试夹具),便于管理测试环境。
插件生态丰富,可以通过插件扩展更多功能,如测试报告、代码覆盖率等。