用 Codex 写测试并跑通:指定函数、要求跟随已有测试风格、覆盖正常和边界,让它运行并报告结果,附 4 段提示词

怎么让 Codex 帮你写单元测试并跑通?官方提示指南的做法是指明要测的函数,要求它跟随项目里已有测试的写法,覆盖正常路径和边界情况。本文给 4 段提示词,并讲清怎么检查 AI 写的测试是否真的有用。

NNathaniel bigo··原创首发·AI 辅助撰写
6 分钟读完
资料核对于 2026-11-05 · 依据官方文档与公开资料整理 Plus 账号
本文根据 Codex 官方文档《Prompting Codex》《Custom instructions with AGENTS.md》整理,资料核对于 2026-11-05。配图为本站整理的示意图,不是软件截图。本站(bigolab.com)不是 OpenAI 官方网站。安装与配置见 /guides/codex-getting-started,本文只讲怎么拿 Codex 写测试。

适用于谁

  • 项目有了功能,却几乎没有测试,想补上的人;
  • 不知道怎么给一个函数设计测试用例的人;
  • 让 AI 写过测试,结果跑不通或者“永远通过”的人。

结论先说

  1. 指明要测什么。 官方示例的做法:IDE 里选中函数所在的行,用命令面板的 “Add to Codex Thread” 加进对话;命令行里用 @ 指明文件,并在提示词里说清是哪个函数。
  2. 让它跟随项目已有的写法。 官方示例的要求是“遵循其他测试里用的惯例”,测试框架、命名、目录结构就不会跑偏。
  3. 说清覆盖范围。 官方示例要求覆盖正常路径加上边界情况。
  4. 让它运行测试,并报告命令和结果。 官方在 Fix a bug 一节要求它运行检查并汇报命令与结果,这个习惯同样适用于测试。
  5. 能跑通不等于写对了。 断言是否有意义,要你自己看。

用 Codex 给函数写测试的流程:指定对象、要求跟随惯例、要求覆盖范围、让它运行、人工检查断言

图:本站根据 Codex 官方文档《Prompting Codex》 整理的示意图

一、动手前:先让项目告诉它怎么测

最好的办法是把测试命令写进 AGENTS.md。官方 AGENTS.md 页的示例就是这种写法,比如“修改 JavaScript 文件后总是运行 npm test”。写好以后,Codex 每次开工前会读到它,读取规则见 /guides/codex-agents-md-how-it-reads。

如果项目里还没有任何测试,先问清楚用什么框架。可以让它根据 package.json、pyproject.toml 之类的配置文件判断,再由你确认,而不是让它自己随便选一个新框架。

二、4 段可以直接复制的提示词

方括号里是要你自己填的内容。

1. 给一个函数写单元测试

请为 @[文件路径] 里的函数 [函数名] 写单元测试。
要求:
1. 跟随项目里现有测试的写法和目录约定(可以先看看 [已有测试文件] );
2. 覆盖正常情况,以及这些边界:[空值、负数、超长输入、重复数据];
3. 不要修改被测函数本身;如果你发现函数有 bug,先告诉我,不要擅自改。
写完后运行这些测试,把命令和结果告诉我。

2. 先列用例,确认后再写

请先阅读 @[文件路径],列出 [函数名] 值得测试的情况,按“正常、边界、异常输入”分组,每项一句话。先不要写代码。
我确认之后你再生成测试。

先看清单再写代码,可以避免它漏掉你关心的场景,也可以让你补充业务上才知道的规则。

3. 让测试失败的先别急着改

刚才运行测试有 [N] 个失败。请逐个分析:是测试写错了,还是被测代码确实有问题?给出判断依据。
不要为了让测试通过而放宽断言或删除用例。需要改被测代码的地方,先告诉我你的理由。
[粘贴失败输出]

4. 补回归测试

我们刚修复了 [bug 描述]。请添加一条回归测试:在修复之前会失败,修复之后会通过。放在 [测试文件] 里,跟随已有写法。
请说明你是怎么确认它“修复前会失败”的。

测试和修复一起做的方法见 /guides/codex-fix-bug-error-repro-prompt。

三、检查 AI 写的测试

AI 写的测试要自己看的几点:断言有意义、覆盖边界、命名清晰、故意改坏会失败、没有放宽原有测试、没有真实密钥

图:本站整理的示意图

  • 断言有没有意义:好测试检查的是行为(输入某值,得到某结果),而不是把实现照抄一遍;
  • 故意改坏试试:把被测函数里的一个判断改反,测试应该失败;如果还是通过,说明测试没起作用;
  • 看有没有改动原有测试:特别是“为了让测试通过”而删除用例、放宽断言;
  • 数据:不要把真实用户数据、密钥写进测试,用虚构数据;
  • 运行环境:让它说清是在什么命令下通过的,自己也运行一遍;
  • 权限:测试可能需要联网、写文件,遇到审批请求时按需决定,见 /guides/codex-permissions-sandbox。

四、不同类型的代码,测试怎么提

下面是通用的测试经验,不是官方规定:

  • 纯函数(输入决定输出,如价格计算、字符串处理):最适合先写,用例清楚,要求覆盖边界值,比如零、负数、空字符串、很大的数;
  • 带数据库或网络的代码:让它说明怎么隔离外部依赖,比如用假数据或模拟对象,不要在测试里连接真实的生产数据库,也不要调用会产生费用的真实接口;
  • 页面组件:先说清你想验证的是显示内容还是点击行为,再让它选合适的测试方式,项目里已有的写法优先;
  • 异步或时间相关的逻辑:提醒它避免依赖当前时间和随机数,否则测试时好时坏,难以排查。

不确定该怎么测时,可以直接问它:“这段代码最容易出错的 3 个地方是什么?各用什么测试验证?”拿到回答后,再决定要写哪些。写好的测试要留在版本控制里,由你提交,不要让它在你没确认的情况下批量改动其他文件。

常见问题

Q:测试一直失败,它反复改怎么办?

中断它,让它先解释失败原因,再决定改测试还是改代码。反复试错会消耗额度,额度规则见 /guides/codex-usage-limits。

Q:它能一次给整个项目补齐测试吗?

不建议。按模块、按文件分批做,每批你都看一遍、运行一遍,再进下一批。

Q:测试覆盖率要不要追求 100%?

这是工程取舍,不是官方要求。优先覆盖核心逻辑和容易出错的地方。

Q:用 Codex 需要付费吗?

Codex 随 ChatGPT 套餐提供,具体额度以官方页面为准;想了解套餐可以看看 /chongzhi/chatgpt-plus 里的说明。

参考资料

  • Codex 官方文档:Prompting Codex — https://learn.chatgpt.com/docs/prompting
  • Codex 官方文档:Custom instructions with AGENTS.md — https://learn.chatgpt.com/docs/agent-configuration/agents-md

Nathaniel 的更多内容

  1. 01

    Claude Code 在 Windows 上的常见坑:Git Bash 还是 PowerShell、路径反斜杠、假报错、WSL 怎么选

    Windows 上用 Claude Code,装好之后最容易踩的是:用哪个 shell、路径写法不一致、grep 没匹配就报错、钩子没生效、WSL 和原生怎么选。本文逐条按官方文档整理原因和处理办法,附三段提示词和一张对照表。

    Claude0
  2. 02

    Claude Code Hooks 实战「提交前自动跑测试」:PreToolUse 拦住 git commit,测试不过就退出码 2,附 Windows 注意点

    只写一个完整例子:让 Claude Code 每次要执行 git commit 之前,先自动跑项目测试,没通过就拦下并把输出交给它修。本文按官方 Hooks 文档给出脚本、settings.json 配置、测试方法、排错和 Windows 的两处坑。

    Claude0
  3. 03

    Claude Code 自定义斜杠命令与 Skill 实战:从零写一个「生成更新日志」的 /release-notes,含传参、预执行命令和调试

    概念看过了,还是不知道从哪下手?本文按 Claude Code 官方「Extend Claude with skills」写一个完整可用的例子:用 /release-notes 根据 git 记录生成更新日志,覆盖目录、frontmatter、传参、预执行命令、预授权和调试。

    Claude0
  4. 04

    Claude Code 部署网站:先写 Dockerfile 和 compose 在本机跑通,再按清单上云服务器,别让它直接改线上

    想让 Claude Code 帮你把网站部署到云服务器。本文只写通用做法,按 Docker 官方文档讲:让它写 Dockerfile、.dockerignore 和 compose,在本机跑通,端口和数据卷怎么设,再给出上线清单,并说明为什么不要让它直接动线上机器。

    Claude0
  5. 05

    Claude Code 写爬虫与数据清洗:先查 robots.txt 和网站条款,控制频率,原始数据留一份再清洗

    想让 Claude Code 写爬虫抓数据再清洗。本文先讲合规:robots.txt 不是授权也不是安全措施、网站条款要自己读;再讲怎么用 Python 标准库检查规则、小样本先试、保存原始数据,以及用 pandas 清洗,附四段提示词。

    Claude0
  6. 06

    Claude Code 写 Chrome 扩展:按 Manifest V3 起步,加载未打包的扩展,改了哪些文件要重新加载

    想让 Claude Code 帮你写一个 Chrome 扩展。本文按 Chrome 官方扩展文档讲:manifest.json 的最小写法、在 chrome://extensions 加载未打包的扩展、哪些改动要刷新、怎么看控制台和报错,再给四段提示词,以及权限要尽量少。

    Claude0

同产品的其他教程

  1. 01

    OpenAI API 的 token 怎么算、怎么估算费用:input_tokens 计数接口、tiktoken 和隐藏的输出 token

    发请求前想知道会用多少 token?官方有 Responses 的 input_tokens 计数接口,能把文字、图片、文件、工具定义一起算准;本地 tiktoken 只适合纯文本。本文给 Python 和 Node 示例,讲输出 token 为什么可能比看到的多,以及怎么估算费用。

    ChatGPT0
  2. 02

    OpenAI API Node.js / TypeScript 快速上手:npm install openai、example.mjs 第一个请求,到流式、函数调用、联网搜索

    用 Node.js 调 OpenAI API:设置 OPENAI_API_KEY 环境变量,npm install openai,新建 example.mjs,用 client.responses.create 发出第一个请求。并列出图片、文件、流式、函数调用、联网搜索和错误捕获的 Node 写法。

    ChatGPT0
  3. 03

    OpenAI API 用量层级(usage tiers)与速率限制怎么提升:Free、Build、Launch、Grow 和后台 Limits 页

    OpenAI API 的限速不是固定的:官方按累计购买额度把组织分成 Free、Build、Launch、Grow 四个层级,达到门槛自动升级。本文讲 RPM、TPM 等指标、怎么在后台查自己的限额、响应头怎么读、花费上限和限速的区别,以及怎么让限额变得够用。

    ChatGPT0
  4. 04

    OpenAI API 报错 400、401、403、404、429、500、503 怎么排查:按官方错误码页逐个看原因和解决办法

    调用 OpenAI API 返回 400、401、403、404、429、500、503,各自什么意思?本文按官方 Error codes 页,每个状态码一节,写清官方给的原因和解决办法,并说明 404 在官方页面里的位置、429 的六种情形,附 Python 和 Node 的错误捕获写法。

    ChatGPT0
  5. 05

    OpenAI Realtime API 是什么:语音到语音会话、WebRTC 与 WebSocket、临时密钥和事件机制

    Realtime API 让模型直接处理音频,做可以随时打断的语音助手。本文按官方文档讲它是什么、什么时候用、浏览器接入的流程、session 与事件、可用声音、60 分钟会话上限、安全标识,以及它和转写、文字转语音的分工。

    ChatGPT0
  6. 06

    OpenAI 图像生成 API 怎么用:gpt-image 系列、images.generate 与 Responses 工具、尺寸质量和遮罩编辑

    用 OpenAI API 生成或编辑图片,有 Image API 和 Responses 里的 image_generation 工具两条路。本文按官方文档给 Python 和 Node 示例,讲 gpt-image 模型选择、尺寸质量格式参数、遮罩编辑、被拦截时的错误处理,以及需要组织验证的提醒。

    ChatGPT0

0 条评论

登录 后参与评论

还没有评论,来抢沙发~