pytest 测试模式:AI 帮你自动写测试,但你需要知道这些坑

pytest 测试模式:AI 帮你自动写测试,但你需要知道这些坑

原创0 次阅读

广告位

728 × 90

pytest 测试模式:AI 帮你自动写测试,但你需要知道这些坑

如果你用 AI 写代码,可能会遇到一个尴尬的情况:

AI 写的业务逻辑挺靠谱,但一到测试就拉胯。要么测的东西不对(压根没测到关键路径),要么测试代码写得比业务代码还烂(全是重复、伪断言、没有覆盖率意识)。

问题不出在 AI 的能力上,出在AI 不知道什么叫「好的测试」。它没有接受过软件测试的「最佳实践」训练。

我踩过的坑

说个真实经历。上个月我给一个 Spring Boot 项目写单元测试,让 AI 帮忙生成。结果它给我生成了 40 个测试用例——全过了。我当时还挺高兴,覆盖率报告看起来也不错。

后来 code review 的时候被同事一句话问住了:"你这个测试真的测了业务逻辑吗?"

我仔细一看,傻了。AI 写的 40 个测试里,30 个在测 getter/setter,8 个在测异常抛出路径,只剩 2 个在测真正的业务逻辑。覆盖率是个骗局——行覆盖率 85%,但核心逻辑的覆盖率几乎是零。更坑的是,那些测试方法名全都是 testGetUserById_whenUserExists_shouldReturnUser 这种长到离谱的驼峰命名,看着规范,实际上测试本身全是一样的模板代码。

后来我才意识到:不是 AI 不想写好测试,是它不知道什么叫「有意义」的测试。

什么是 pytest-patterns?

pytest-patterns 就是来解决这个问题的。它不是一个库,而是一个 AI 技能包——说白了就是一套注入给 AI 编程助手(Claude Code、Codex 等)的知识包。安装之后,AI 就知道怎么写 good-quality 的测试了。

覆盖的范围包括:

  • 单元测试应该测什么、不该测什么
  • 集成测试怎么搭 fixture
  • API 测试的断言风格
  • 参数化测试的常见模式
  • 覆盖率报告怎么配置和解读
  • OOP 测试的特殊处理方式

为什么技能包这种形式很重要?

pytest-patterns 代表的是一种正在成型的模式:AI 的「专业能力」不来自更大更强的模型,而来自你给它装了哪些知识包。

你可以把这个知识包理解成 AI 的「插件式大脑」——写代码装一个 Coding 包,写测试装一个 Testing 包,做 UI 装一个 Design 包。每个包注入对应的领域知识、规范约束和最佳实践。模型本身不需要什么都懂,装上它它就懂了。

而且说实话,我用下来最大的感受是:装上之后不是 AI 立刻变完美了,而是它犯错的「方向」对了。以前它写一堆假测试(看着像测试其实没测东西),现在至少它知道该关注什么、不该关注什么。方向对了,剩下的就是调细节了。

一条学习路径

视频里还点出了另一个价值:对于想从开发转测试方向的人来说,这个技能包本身也是一条学习路径。你可以看 AI 在什么场景下写什么样的测试、用什么样的断言、怎么组织 fixture——看会了,你就学会了。

GitHub 地址:github.com/PramodDutta/qaskills(包含 pytest-patterns 在内的测试技能包集合)

广告位

评论 (0)

0/500

6 + 1 = ?

暂无评论,来写第一条吧