




资源介绍
视频数量:27个
总时长:1小时19分
课程介绍:
pytest现代Python测试实战
写代码最让人头疼的事是什么?很多人可能会说是调试bug,但真正写过项目的人都知道,比debug更让人心塞的是:代码改着改着,突然发现之前能跑的功能崩了。这种情况在团队协作中尤为常见:你改了一个文件,不知道哪个角落的模块就用到了这个函数,结果整个系统出了问题。
这就是为什么测试这么重要。一个好的测试套件就像是你代码的守护者,在你每次改动后自动帮你检查:嘿,这个功能还能用吗?数据处理还正常吗?用户登录还能跑吗?不用你手动一个个去试,测试帮你全部检查一遍。而且当你接手别人的代码时,有测试在手,心里也踏实得多。
说到Python测试,pytest绝对是现在最火的框架。它简单、灵活、功能强大,不管是小项目还是大工程都能hold住。这门课就是专门教你用pytest来编写专业的自动化测试,整个课程不到80分钟,内容非常紧凑,全是干货。
课程开头会带你搭建开发环境,确保你的电脑上能正常运行Python代码和pytest。准备工作很简单,跟着做就行。
接下来进入测试基础部分,这部分会手把手教你写第一个测试。你会学到怎么组织测试文件,建议把测试代码单独放在一个文件夹里,这样项目结构更清晰。然后重点讲怎么写出专注单一功能的测试函数,一个测试只验证一个行为,这样出问题的时候你一眼就能定位到是哪里。最后教你如何断言代码是否抛出了正确的异常和错误信息,这在做输入验证测试时特别有用。
fixture是pytest最强大的功能之一,这部分会深入讲解。fixture可以理解成测试的"准备环节",你可以把重复的初始化代码写成一个fixture,然后在多个测试里复用,不用每个测试都写一遍。比如你要测试数据库功能,每次测试都要连接数据库,把这个连接逻辑写成fixture就可以了。这部分会详细对比function scope和module scope两种fixture的作用范围,告诉你什么时候该用哪种。另外还会讲到teardown机制,确保测试运行完后资源能被正确清理,比如关闭数据库连接、删除临时文件这些收尾工作。
参数化和标记能让你的测试更灵活高效。参数化允许你用一组不同的输入来运行同一个测试函数,比如要测试邮箱验证功能,可能要测十几个不同的邮箱格式,用参数化只需要写一个测试函数,传入不同的邮箱地址就能跑所有测试,不用重复写代码。标记功能可以让你在需要的时候跳过某些测试,比如某个功能还在开发中,或者在特定条件下才运行某个测试。还有expected failure用来标记已知的问题,测试会跑但结果不计入通过率,很适合在开发过程中处理临时性的问题。自定义标记还能帮你组织测试套件,比如按功能模块或者按测试类型来分类运行。
实际项目中,你的代码往往会依赖其他模块或者外部服务,比如发邮件、发HTTP请求、操作数据库,这些在测试环境里可能不方便直接调用。mocking就是来解决这个问题的。pytest内置了monkeypatch工具,可以让你在测试时临时替换掉某些函数或者变量的值。比如你要测试发送邮件的逻辑,但不想真的发邮件,就可以用monkeypatch把发送函数替换成一个空操作。课程会教你如何验证被替换的函数是否被正确调用、传入了正确的参数,还能模拟不同的执行路径。另外还会讲到MagicMock对象,它能帮你更优雅地做mocking,以及对比patch和monkeypatch各自的适用场景,最后介绍pytest-mock插件,让mocking代码写起来更简洁。
测试覆盖率能告诉你代码有多少被执行到了。课程会用pytest-cov插件教你生成覆盖率报告,发现哪些代码还没被测试覆盖。行覆盖率和分支覆盖率是不同的概念,前者看每一行代码有没有被执行,后者还要看每个条件分支有没有都走到。你可以设置最低覆盖率要求,比如必须达到80%,这样CI系统就能自动检查。课程还会教你把覆盖率相关的配置集中写在配置文件里,不用每次运行命令都敲一长串参数。
学完这门课,你就能为自己的Python项目构建起完整的测试体系。从最基础的写测试、到fixture复用、参数化、mocking、再到覆盖率检查,课程覆盖了实际工作中最常用的pytest技巧。每个知识点都有代码演示,你可以跟着敲一遍,亲手实践。有测试在手,你改代码会更有底气,也不用担心改坏已有的功能。