
使用copliot编写测试代码
GitHub Copilot 是一个 AI 编码助手,可以帮助你快速生成。GitHub Copilot 可以帮助你快速生成。,Copilot 会自动补全未测试的部分!,并结合 coverage.py。在 VS Code 中,新建。Copilot 可以帮助你。,大幅提高开发效率!# 添加更多测试覆盖。
🚀 使用 GitHub Copilot 编写测试代码
GitHub Copilot 是一个 AI 编码助手,可以帮助你快速生成 单元测试(Unit Test) 和 集成测试(Integration Test),大幅提高开发效率!
📌 1. 如何在 VS Code 中启用 Copilot
1️⃣ 安装 GitHub Copilot 插件
- 在 VS Code 的扩展市场搜索 GitHub Copilot,安装插件
- 登录你的 GitHub 账户(需订阅 Copilot 服务)
2️⃣ 启用 Copilot
- 打开 VS Code
- 进入
Settings
,搜索Copilot
,确保 启用
📌 2. 让 Copilot 生成 Python 测试代码
✅ 例子:为 math_utils.py
生成测试
📜 被测代码(math_utils.py
)
def add(a, b):
return a + b
def subtract(a, b):
return a - b
def multiply(a, b):
return a * b
def divide(a, b):
if b == 0:
raise ValueError("Cannot divide by zero")
return a / b
✅ 1️⃣ 让 Copilot 生成 unittest
💡 提示 Copilot 生成测试
在 VS Code 中,新建 test_math_utils.py
,输入:
import unittest
from math_utils import add, subtract, multiply, divide
然后 按下回车,Copilot 会自动补全测试代码:
class TestMathUtils(unittest.TestCase):
def test_add(self):
self.assertEqual(add(2, 3), 5)
self.assertEqual(add(-1, 1), 0)
def test_subtract(self):
self.assertEqual(subtract(10, 5), 5)
self.assertEqual(subtract(0, 3), -3)
def test_multiply(self):
self.assertEqual(multiply(4, 5), 20)
self.assertEqual(multiply(-1, 5), -5)
def test_divide(self):
self.assertEqual(divide(10, 2), 5)
self.assertRaises(ValueError, divide, 5, 0)
if __name__ == "__main__":
unittest.main()
✅ 2️⃣ 让 Copilot 生成 pytest
如果你更喜欢 pytest
,创建 test_math_utils.py
,输入:
import pytest
from math_utils import add, subtract, multiply, divide
然后 按下回车,Copilot 会自动补全:
def test_add():
assert add(2, 3) == 5
assert add(-1, 1) == 0
def test_subtract():
assert subtract(10, 5) == 5
assert subtract(0, 3) == -3
def test_multiply():
assert multiply(4, 5) == 20
assert multiply(-1, 5) == -5
def test_divide():
assert divide(10, 2) == 5
with pytest.raises(ValueError):
divide(5, 0)
📌 3. 运行测试
✅ 运行 unittest
python -m unittest test_math_utils.py
✅ 运行 pytest
pytest test_math_utils.py
📌 4. Copilot 还能帮你生成 Mock 测试
💡 如果你的代码依赖数据库或 API,可以用 unittest.mock
创建 test_db.py
,输入:
from unittest.mock import MagicMock
Copilot 会自动补全:
import unittest
from unittest.mock import MagicMock
from db_utils import fetch_data
class TestDatabase(unittest.TestCase):
def test_fetch_data(self):
mock_db = MagicMock()
mock_db.query.return_value = {"id": 1, "name": "Alice"}
result = fetch_data(mock_db, "SELECT * FROM users")
self.assertEqual(result, {"id": 1, "name": "Alice"})
if __name__ == "__main__":
unittest.main()
🚀 使用 GitHub Copilot 生成代码覆盖率测试(Coverage Testing)
代码覆盖率测试用于 检查代码的执行情况,确保 测试覆盖到关键逻辑,提高代码质量。
Copilot 可以帮助你 自动生成测试,并结合 coverage.py
计算覆盖率! 📈
📌 1. 安装必要的依赖
pip install coverage pytest
📌 2. 示例代码
创建 math_utils.py
(被测代码):
def add(a, b):
return a + b
def subtract(a, b):
return a - b
def multiply(a, b):
return a * b
def divide(a, b):
if b == 0:
raise ValueError("Cannot divide by zero")
return a / b
📌 3. 让 Copilot 生成测试
✅ 1️⃣ 自动生成 pytest
测试
创建 test_math_utils.py
,输入:
import pytest
from math_utils import add, subtract, multiply, divide
然后 按回车,Copilot 会自动补全:
def test_add():
assert add(2, 3) == 5
assert add(-1, 1) == 0
def test_subtract():
assert subtract(10, 5) == 5
assert subtract(0, 3) == -3
def test_multiply():
assert multiply(4, 5) == 20
assert multiply(-1, 5) == -5
def test_divide():
assert divide(10, 2) == 5
with pytest.raises(ValueError):
divide(5, 0)
📌 4. 运行代码覆盖率测试
✅ 运行 coverage.py
coverage run -m pytest
然后 生成覆盖率报告:
coverage report -m
示例输出:
Name Stmts Miss Cover
-----------------------------------
math_utils.py 8 0 100%
✅ 生成 HTML 报告
coverage html
然后 打开 htmlcov/index.html
查看详细报告。
📌 5. 让 Copilot 自动优化测试
如果覆盖率 <100%,你可以:
1️⃣ 在 VS Code 中打开 test_math_utils.py
2️⃣ 输入 # 添加更多测试覆盖
3️⃣ 按下 Enter
,Copilot 会自动补全未测试的部分! 🎯
🚀 使用 GitHub Copilot 进行接口测试(API Testing)
GitHub Copilot 可以帮助你快速生成 API 接口测试,结合 pytest
和 requests
,让测试更高效!🔥
📌 1. 安装必要的依赖
pip install requests pytest
如果你的项目使用 FastAPI
或 Flask
,你可能需要:
pip install fastapi flask httpx
📌 2. 示例:创建一个 Flask API
创建 app.py
:
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route('/add', methods=['POST'])
def add():
data = request.get_json()
result = data['a'] + data['b']
return jsonify({"result": result})
@app.route('/status', methods=['GET'])
def status():
return jsonify({"status": "ok"})
if __name__ == '__main__':
app.run(debug=True)
启动 Flask API:
python app.py
📌 3. 让 Copilot 自动生成 API 测试
✅ 1️⃣ 生成 pytest
测试
创建 test_api.py
,输入:
import requests
然后 按回车,Copilot 会自动补全:
BASE_URL = "http://127.0.0.1:5000"
def test_status():
response = requests.get(f"{BASE_URL}/status")
assert response.status_code == 200
assert response.json()["status"] == "ok"
def test_add():
response = requests.post(f"{BASE_URL}/add", json={"a": 3, "b": 5})
assert response.status_code == 200
assert response.json()["result"] == 8
📌 4. 运行测试
pytest test_api.py
如果测试通过,你会看到:
============================= test session starts =============================
collected 2 items
test_api.py .. ✅ ✅ (全部通过)
📌 5. 让 Copilot 自动优化测试
如果你想做更全面的测试,可以:
1️⃣ 在 test_api.py
里输入 # 添加更多 API 测试
2️⃣ 按 Enter
,Copilot 会自动补全 edge cases! 🎯
更多推荐
所有评论(0)