在与编程智能体协作时,自动化测试不再是可选的。
以前不写测试的那些借口——比如编写测试太耗时,或者在代码库快速演进时不断重写测试成本太高——在智能体只需几分钟就能把它们处理好的今天,已经不再成立了。
测试对于确保 AI 生成的代码“名副其实”也至关重要。如果代码从未被执行过,那么它在部署到生产环境时是否能正常工作,就全凭运气了。
测试还是帮助智能体快速熟悉现有代码库的绝佳工具。观察一下当你询问 Claude Code 或类似工具关于现有功能的情况时会发生什么——它们极大概率会找到并阅读相关的测试代码。
智能体本身就带有测试偏好,但现有测试套件的存在,几乎肯定会促使智能体对其所做的每一项新更改进行测试。
每当我针对现有项目与智能体开启新会话时,我都会先输入类似下面的提示词:
先运行测试 (First run the tests)
对于我的 Python 项目,我配置了 pyproject.toml,所以我可以改用这个提示词:
运行 "uv run pytest"
这几个词的提示词有以下几个目的:
-
明确测试套件的存在:它告诉智能体这里有一套测试,并强迫它弄清楚如何运行这些测试。这几乎可以确保智能体在未来为了确保没有破坏任何功能而主动运行测试。
-
提供项目概况:大多数测试框架都会向智能体显示测试的大致数量。这可以作为项目规模和复杂度的参考指标,同时也暗示智能体如果想深入了解项目,可以去搜索测试用例本身。
-
建立测试思维:运行过测试后,智能体在随后自然而然地会用它自己的测试来扩展现有的套件。
与“使用红/绿 TDD”类似,“先运行测试”这几个字就涵盖了模型中预先内置的大量软件工程规范。
原文:Agentic Engineering Patterns by Simon Willison
关注公众号「Python之禅」,回复「1024」免费获取Python资源