想要 AI 帮你写出靠谱的测试代码?本文作者分享了在 Python 项目中利用现有测试套件、特定指令和参考项目来引导 AI 生成高质量测试的实战经验。
有人在 Hacker News 上问我,有没有什么技巧能让编程智能体(Coding Agents)编写出高质量的测试代码。以下是我的回答:
1. 善用 Python 生态优势
我主要使用 Python,这本身就有很大的帮助。因为在训练数据中,有大量优秀的 pytest 测试用例,包括使用 fixture 库模拟外部 HTTP API、快照测试以及其他优雅的模式。
或者我可以简单地说“使用 pytest-httpx 来模拟端点”,Claude 就能明白我的意思。
2. 警惕代码重复
时刻关注测试代码的质量很重要。我看到最常见的反模式(Anti-pattern)是大量的重复测试设置代码。虽然这不是什么大问题——相比于实现代码,我对测试代码中的重复逻辑容忍度更高——但这仍然值得改进。
使用以下指令通常很有效:
- “重构这些测试,使用
pytest.mark.parametrize” - “将通用的设置代码提取到
pytest fixture 中”
3. 最好的技巧:以身作则
归根结底,让编程智能体写出好测试的最佳方法是:确保它在一个已经拥有良好测试模式的项目中工作。
编程智能体能够非常敏锐地捕捉现有的模式,完全不需要额外的提示。我发现,一旦项目有了整洁的基础测试,智能体新添加的测试往往能在质量上与之匹配。
这就像在大型项目中与团队合作一样——保持代码整洁意味着当其他人寻找如何编写测试的示例时,他们会被指引到正确的方向。
4. 终极绝招:克隆并模仿
我还有一个经常使用的技巧:
Clone datasette/datasette-enrichments from GitHub to /tmp and imitate the testing patterns it uses. (从 GitHub 克隆 datasette/datasette-enrichments 到 /tmp,并模仿它使用的测试模式。)
我在处理自己编写的不同现有项目时经常这样做——向智能体展示你喜欢的做法,是教它做事的捷径。
笔者锐评 💡
AI 编程智能体(如 Claude, Cursor 等)本质上是一个超级模仿者。它写出的代码质量,往往取决于它“看到”的上下文。
如果你把 AI 扔进一个没有任何测试、代码风格混乱的“屎山”项目里,它生成的代码很可能也是“屎山”的一部分。反之,如果你给它提供了一个结构清晰、测试覆盖率高、遵循最佳实践的项目环境,它就会自动向好学生看齐。
所以,与其费尽心思设计复杂的 Prompt,不如先把自己项目的“基础设施”搭建好,或者直接给它一个优秀的开源项目作为范本。这不仅是 Prompt Engineering,更是 Context Engineering(上下文工程)。
求点赞 👍 求关注 ❤️ 求收藏 ⭐️你的支持是我更新的最大动力!