免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

5分钟跑通 pytest:Python 测试的零门槛上手指南

5分钟跑通 pytest:Python 测试的零门槛上手指南 5分钟跑通 pytestPython 测试的零门槛上手指南【免费下载链接】pytestThe pytest framework makes it easy to write small tests, yet scales to support complex functional testing项目地址: https://gitcode.com/GitHub_Trending/py/pytestpytest 是目前最主流的 Python 测试框架。一行 assert 就能写出一个完整测试。哪怕你从没写过测试五分钟也能让它跑起来。为什么值得试三个改变写测试体验的差别样板代码少。老牌 unittest 要写类、要 setUp、要 self.assertAlmostEqual。pytest 里普通函数加一个 assert 就是测试。失败信息一眼看懂。assert 不通过时pytest 会告诉你错在哪一行、两边的值各是多少。不用再靠加 print 猜。开箱即跑。不用指定类名不用写文件路径。敲一个 pytest它自动收集所有 test_ 开头的文件。五分钟上手安装、第一个测试、跑通它第一步安装pip install -U pytest-U 表示升级到最新版已有安装的话这条命令顺便完成升级。第二步新建一个 test_sample.py写一个被测函数和一个测试函数def inc(x): return x 1 def test_answer(): assert inc(3) 4注意名字都以 test_ 开头这是 pytest 识别测试的依据。第三步直接跑$ pytest test_sample.py . [100%] 1 passed in 0.04s看到这行 1 passed 就成了 ✅ 完整步骤参考 doc/en/getting-started.rst。一个真实场景走查三个用例变成一个参数化函数 假设有个 add(a, b) 函数要验证三组数据(1, 2, 3)、(-1, 1, 0)、(0, 0, 0)。写三个测试函数很重复。用内置的 parametrize 装饰器数据摆成一张表就行import pytest pytest.mark.parametrize( a, b, expected, [(1, 2, 3), (-1, 1, 0), (0, 0, 0)] ) def test_add(a, b, expected): assert add(a, b) expected一行一组数据哪组失败输出里会明确标出来。更多玩法见 doc/en/how-to/parametrize.rst。少踩坑的实践技巧⚠️ 这几条是社区里反复被强调的命名严格守约定文件 test_xxx.py、函数 test_xxx。收集靠这个规则命名不对会被直接忽略而且不给提示。放心用裸 assertpytest 会重写断言自动展示期望值和实际值的差异比 print 调试高效得多。公共资源交给 fixture临时文件、数据库连接这类东西写成 fixture而不是在每个测试里复制粘贴还能用 scope 控制创建频率。原理见 doc/en/explanation/fixtures.rst。慢测试打上标记pytest.mark.slow 标一下平时用 -m not slow 只跑快的长的留给 CI。值得搭配的生态扩展 按需装别贪多pytest-cov生成代码覆盖率报告告诉你哪些行还没被测试覆盖。pytest-xdist把测试分到多个进程并行跑大用例集等待时间直接砍半。pytest-mock提供 mocker fixture一行代码 stub 掉第三方依赖。pytest-django帮你配好 Django 测试环境不用手动折腾数据库。插件清单维护在 doc/en/reference/plugin_list.rst想找什么细分方向的方案都能翻到。pytest 社区非常活跃早期开发冲刺还是线下办的下一步建议先把官方文档的入门篇和 fixture 章节过一遍能自己写 fixture 之后日常场景基本就够用了。官方文档入口doc/en/index.rst。【免费下载链接】pytestThe pytest framework makes it easy to write small tests, yet scales to support complex functional testing项目地址: https://gitcode.com/GitHub_Trending/py/pytest创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表