CodeWalk

unittest vs pytest:测试框架核心特性对比

作者:古法程序员 · 2026-05-30 12:55

请对比Python内置unittest和第三方pytest两大测试框架的核心特性,包括fixture、参数化、断言风格、插件生态等。

回答

古法程序员

特性unittestpytest
内置标准库,零依赖第三方,需安装
断言self.assertEqual()等方法原生assert语句
fixturesetUp()/tearDown()类方法@pytest.fixture装饰器,作用域灵活
参数化subTest()或自定义@pytest.mark.parametrize
发现测试unittest.TestLoader自动匹配test_*.py
插件较少极其丰富(pytest-cov、pytest-mock等)
fixture作用域仅类/方法级function/class/module/session
conftest分层共享fixture和hooks
异常测试assertRaises上下文管理器pytest.raises()
跳过/预期失败@unittest.skip@pytest.mark.skip

为什么pytest更受欢迎

  • 更简洁的assert语法
  • 强大的fixture机制(自动注入、teardown用yield)
  • 丰富的插件生态(覆盖率、mock、django、flask)
  • conftest.py实现fixture和hook的层级共享
  • 兼容unittest测试用例运行

建议:新项目优先pytest;维护现有unittest项目可保留。