Python 的 pytest 是目前最流行的测试框架之一,相比 Python 自带的 unittest 以及其他测试工具,它有以下几个明显优势:
TestCase 类assert# pytest
def test_add():
assert 1 + 1 == 2
对比 unittest:
import unittest
class TestAdd(unittest.TestCase):
def test_add(self):
self.assertEqual(1 + 1, 2)
✅ 更少样板代码,更易读
当断言失败时,pytest 会自动展示详细的变量值对比:
def test_fail():
a = [1, 2, 3]
b = [1, 2, 4]
assert a == b
输出会清楚显示哪里不同,而不是只说 False is not True。
test_*.py 或 *_test.pytest_ 开头即可pytest
无需手动注册测试用例。
pytest 有非常成熟的插件体系,例如:
pytest-cov:代码覆盖率pytest-mock:Mock 支持pytest-xdist:并行执行pytest-django:Django 测试pytest-html:HTML 报告pip install pytest-cov
pytest --cov=myapp
import pytest
@pytest.fixture
def db():
print("connect")
yield
print("close")
def test_db(db):
assert True
比 setUp/tearDown 更灵活。
轻松测试多组数据:
import pytest
@pytest.mark.parametrize("a,b,expected", [
(1, 2, 3),
(2, 3, 5),
])
def test_add(a, b, expected):
assert a + b == expected
unittest 用例可以直接用 pytest 运行pytest test_unittest.py
--lf:只跑上次失败的用例--pdb:失败时进入调试器-x:失败立即停止pytest -x --lf
| 特性 | pytest | unittest |
|---|---|---|
| 语法 | 简洁 | 较繁琐 |
| 断言 | assert | self.assert* |
| Fixture | 强大 | 一般 |
| 插件 | 丰富 | 少 |
| 参数化 | 原生支持 | 麻烦 |
| 易用性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
如果你愿意,我也可以:
你想看哪一个?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。