用 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 條評論

登入 後參與評論

還沒有評論,來搶沙發~