一、适合谁 / 前置条件
本教程面向想在本机离线用 AI 写代码测试的 Python 开发者:在意代码隐私(不想把源码传到第三方云端)、希望零 API 费用、或需要在无网环境跑辅助编程的人。前置:一台装了 Ollama 的电脑(Windows / macOS / Linux 均可),已安装 Python 3.10+ 与 pytest。
二、操作步骤(可复制)
第 1 步:安装并启动 Ollama(以 Windows 为例):
curl -fsSL https://ollama.com/install.sh | sh # macOS/Linux
# Windows 去 ollama.com 下载安装包,装完自动后台运行
第 2 步:拉取代码模型(本机实测用 7B,约 4.4GB):
ollama pull qwen2.5-coder:7b
第 3 步:用一行命令直接对话,或写脚本调 API。下面这段 Node 脚本就是本教程实测用的:
fetch('http://127.0.0.1:11434/api/generate', {
method: 'POST',
headers: {'Content-Type':'application/json'},
body: JSON.stringify({ model:'qwen2.5-coder:7b', prompt, stream:false })
})
把待测函数贴进 prompt,让模型输出 pytest 用例即可。
三、本机真实实测输出(qwen2.5-coder:7b)
以下为本机 Ollama qwen2.5-coder:7b 原始返回,未做任何修饰(实测耗时 11.5 秒),注意它自带两处错误——这正是下一节的纠错素材:
import pytest
def test_divide_and_round():
assert divide_and_round(10, 2) == 5.00
assert divide_and_round(10, 3) == 3.33
assert divide_and_round(10, 0) == pytest.raises(ValueError)
assert divide_and_round(1, 10**10, 5) == 0.00001
assert divide_and_round(1, 10**10, 1) == 0.0
四、常见坑 + 解决(逐行纠错)
坑 1:pytest.raises 写成等号比较。模型第 3 行 assert divide_and_round(10, 0) == pytest.raises(ValueError) 是错的——pytest.raises 是上下文管理器,必须配合 with 使用,写成 == 永远为 False(且不会真的触发异常断言)。
坑 2:对 round 的浮点行为理解有误。第 4 行 divide_and_round(1, 10**10, 5) 期望 0.00001,但 1 / 10**10 = 1e-10,round(1e-10, 5) 结果是 0.0(远小于 0.00001),模型把"保留 5 位小数"误当成了"变成 1e-5"。
修正版(人审后可直接跑通):
import pytest
def test_normal():
assert divide_and_round(10, 2) == 5.0
assert divide_and_round(10, 3) == 3.33
def test_divide_by_zero():
with pytest.raises(ValueError):
divide_and_round(10, 0)
def test_precision():
assert divide_and_round(1, 10**10, 5) == 0.0
assert divide_and_round(2, 3, 4) == 0.6667
结论:AI 生成的测试不要无脑复制,至少过一遍人审——尤其异常断言和浮点边界。
五、适用 / 不适用人群
适用:重视源码隐私、需离线/无网编程、想零成本用本地模型辅助写测试的个人开发者;做原型、补覆盖率、生成样板测试很快。
不适用:需要最新顶级模型能力(如 Claude/GPT-5 级推理)、超大上下文仓库级重构、或团队统一云 IDE 流程的团队——本地 7B 在复杂跨文件理解上仍弱于云端大模型。
六、同类编程助手对比
| 工具 | 部署 | 费用 | 强项 | 弱项 |
|---|---|---|---|---|
| qwen2.5-coder(本地/Ollama) | 本机 | 免费 | 隐私、离线、零成本 | 7B 复杂推理弱 |
| Cursor | 云端 | 订阅 | 仓库级理解、Tab 补全强 | 需联网、付费 |
| Trae | 云端 | 免费档 | 中文项目友好 | 需联网 |
| GitHub Copilot | 云端 | 订阅 | IDE 深度集成 | 付费、隐私顾虑 |
| Windsurf | 云端 | 订阅 | Agent 式多文件编辑 | 付费 |
七、小结 + 相关阅读
本地 Ollama + qwen2.5-coder 是把"AI 写测试"做到隐私可控、零成本、离线可用的最低门槛方案;代价是 7B 模型会犯常识错误,必须人审。把它当"初稿生成器"而非"正确答案来源",效率最高。想更强推理就上 Cursor / Copilot 这类云端助手。把两者按场景搭配,是性价比最高的本地+云端组合。
延伸阅读:见下方「相关阅读」与正文「相关工具」卡片。