GitHub Copilot 完整教學

Part 10:實戰應用 - 單元測試

用 Copilot 自動產生測試程式碼

/tests 指令 自動測試 品質保證

🎯 本單元學習目標

完成這個單元後,你將能夠:

1. 使用 /tests 指令

在 Chat 中快速產生測試程式碼

2. 註解驅動產生測試

用中文註解讓 Copilot 生成測試

3. Chat 對話產生測試

與 Copilot 對話產生客製化測試

4. 執行與解讀測試結果

在終端機執行測試並理解結果

核心觀念:單元測試是確保程式品質的重要工具,Copilot 能大幅減少撰寫測試的時間!

❓ 為什麼需要單元測試?

🐛 及早發現錯誤

在開發階段就找出 Bug
不用等到上線才發現問題

🔄 安全重構

修改程式碼後跑測試
確保沒有破壞原有功能

📖 活的文件

測試案例說明函式該如何使用
比註解更可靠

💪 信心保證

測試全部通過
更有信心交付程式碼

痛點:手動撰寫測試很花時間!這就是 Copilot 派上用場的地方。

🧪 方法一:使用 /tests 指令

操作步驟

  1. 在編輯器中選取要測試的函式
  2. 開啟 Copilot Chat(Ctrl + Alt + I
  3. 輸入 /tests
  4. 按 Enter 送出
使用 /tests 指令

選取函式後,在 Chat 中輸入 /tests

提示:確保完整選取函式(從 def 到函式結尾)

📋 /tests 產生的測試程式碼

/tests 產生的測試程式碼

Copilot 自動產生完整的測試程式碼

Copilot 會自動產生:
  • 測試類別和測試函式
  • 多種測試案例(正常情況、邊界情況)
  • 必要的 import 語句

📝 方法二:註解驅動產生測試

操作步驟

  1. 建立測試檔案(如 test_xxx.py
  2. 輸入中文註解描述測試需求
  3. 按 Enter 等待灰色建議
  4. 按 Tab 接受
# 測試 is_prime 函式的單元測試
註解驅動產生測試

用中文註解讓 Copilot 產生測試程式碼

💬 方法三:Chat 對話產生測試

操作方式

在 Copilot Chat 中直接描述你的測試需求:

請為以下函式產生 pytest 單元測試:

或使用檔案參照:

#file:practice9.py 請為這個檔案中的函式產生 pytest 單元測試
Chat 對話產生測試

透過對話方式產生客製化測試

📚 Python 測試框架比較

框架 特點 使用方式
unittest Python 內建、不需額外安裝 python -m unittest test_file.py
pytest 語法簡潔、功能強大、社群推薦 python -m pytest test_file.py -v
建議:初學者可從 unittest 開始,熟悉後再學 pytest
安裝 pytest:pip install pytest
Copilot 支援兩種框架:在提問時指定「pytest」或「unittest」,Copilot 會產生對應的測試程式碼。

▶️ 執行測試程式

操作步驟

  1. 將測試程式碼存成 test_xxx.py
  2. 開啟終端機(Ctrl + `
  3. 執行測試指令
執行測試程式

在終端機中執行測試指令

常用指令:
pytest:python -m pytest test_practice.py -v
unittest:python -m unittest test_practice.py

📊 測試結果解讀

測試結果解讀

測試執行完成後的結果畫面

✅ PASSED / OK

測試通過!函式行為符合預期。

❌ FAILED / ERROR

測試失敗!需要檢查函式邏輯或測試案例。

小技巧:測試失敗不一定是壞事,它幫你找出程式碼中的問題!

💡 單元測試實用技巧

1. 測試命名

使用清楚的命名
test_函式名_測試情境
例:test_is_prime_with_negative

2. 測試邊界條件

考慮特殊情況:
- 空值 / None
- 空列表 / 空字串
- 負數 / 零

3. 測試異常處理

確認錯誤輸入時
函式會正確處理或拋出異常

4. 一次一測試

每個測試函式只測一件事
失敗時更容易找出問題

注意:Copilot 產生的測試不一定完整,可能需要自己補充邊界條件!

🏋️ 實作練習

練習目標:使用三種方法為函式產生單元測試

練習步驟

  1. 開啟 Part 9 的 practice9.py(包含多個函式)
  2. 選擇一個函式,使用 /tests 產生測試
  3. 建立 test_practice.py,用註解產生測試
  4. 在 Chat 中對話,產生 pytest 格式的測試
  5. 執行測試,確認結果
挑戰:如果測試失敗,試著找出原因並修正!是函式有 Bug,還是測試案例不正確?

📝 隨堂測驗

問題 1:在 Copilot Chat 中,哪個指令可以快速產生測試?

A. /test
B. /tests
C. /unittest
D. /pytest

問題 2:執行 pytest 測試的指令是?

A. pytest test.py
B. python -m pytest test.py -v
C. run pytest test.py
D. A 和 B 都可以

問題 3:測試結果顯示 FAILED,表示?

A. 測試程式碼有語法錯誤
B. 函式行為不符合測試預期
C. pytest 沒有正確安裝
D. 需要重新啟動 VS Code

✅ 測驗解答

問題 1 答案:B

/tests 是 Copilot Chat 中用來產生單元測試的 Slash 指令。注意是複數形式 tests,不是 test。

問題 2 答案:D

兩種方式都可以執行 pytest 測試。pytest test.py 是簡寫,python -m pytest test.py -v 則更明確且顯示詳細資訊(-v 表示 verbose)。

問題 3 答案:B

FAILED 表示測試執行成功,但函式的實際輸出與測試預期不符。這可能是函式有 Bug,也可能是測試案例的預期值設錯了。

🎉 Part 10 重點回顧

三種產生測試方法

1. /tests 指令
2. 註解驅動
3. Chat 對話

兩大測試框架

unittest(內建)
pytest(推薦)

執行與解讀

終端機執行測試
PASSED = 通過
FAILED = 失敗

記得檢查

Copilot 產生的測試
可能需要補充邊界條件

核心觀念

「好的測試是程式品質的守護者」

下一單元預告

Part 11:實戰應用 - 程式碼重構
用 Copilot 優化和改善程式碼結構!