🎯 做完你会得到
粘贴代码后,自动获得可直接运行的单元测试文件,覆盖主要场景,包含边界值和异常处理测试。
🛠 需要什么
- github
👤 适合谁
- 开发者
- 测试工程师
⚡ 效果预览
提交代码后自动生成单元测试,覆盖率提升30%+,无需手写重复测试代码
⚠️ 待验证案例:本案例基于 OpenClaw 代码生成能力的真实描述,生成的测试代码需要开发者审查后使用。如果你跑通了,欢迎联系站长提交验证记录。
解决什么问题
写单元测试是好习惯,但也是最让开发者拖延的事——思路清楚,但写起来费时间,尤其是边界用例和异常处理。这个场景让 OpenClaw 帮你生成测试初稿:
- 谁会用到:需要提升测试覆盖率的开发者,或者想快速给遗留代码补测试的工程师
- 省了什么:不用手写每一条测试用例,不用自己想边界值
- 效果是什么:粘贴代码,几分钟内得到可运行的测试文件,再手工审查调整
前置条件
- OpenClaw 已安装
- 有需要测试的代码(支持 Python、JavaScript/TypeScript、Go、Java 等主流语言)
- Claude Max 账号,或 Anthropic API Key
用到的工具
| 工具 | 用途 | 获取方式 |
|---|---|---|
| anthropic/claude-sonnet-4-6 | 分析代码逻辑、生成测试用例 | Claude Max 账号 |
| 代码执行(内置) | 验证测试可以运行 | OpenClaw 内置 |
预期结果
输入(一个 Python 函数):
def calculate_discount(price: float, discount_rate: float) -> float:
"""计算折后价格"""
if discount_rate < 0 or discount_rate > 1:
raise ValueError("折扣率必须在 0 到 1 之间")
return price * (1 - discount_rate)
输出(自动生成的测试文件):
import pytest
from your_module import calculate_discount
class TestCalculateDiscount:
# 正常用例
def test_normal_discount(self):
assert calculate_discount(100.0, 0.2) == 80.0
def test_no_discount(self):
assert calculate_discount(100.0, 0) == 100.0
def test_full_discount(self):
assert calculate_discount(100.0, 1.0) == 0.0
# 边界用例
def test_small_price(self):
assert abs(calculate_discount(0.01, 0.5) - 0.005) < 1e-9
def test_large_price(self):
result = calculate_discount(1_000_000, 0.1)
assert result == 900_000.0
# 异常用例
def test_negative_discount_raises(self):
with pytest.raises(ValueError, match="折扣率必须在 0 到 1 之间"):
calculate_discount(100.0, -0.1)
def test_discount_over_one_raises(self):
with pytest.raises(ValueError):
calculate_discount(100.0, 1.1)
# 浮点精度
def test_float_precision(self):
result = calculate_discount(10.0, 0.1)
assert abs(result - 9.0) < 1e-9
最简上手
为单个函数生成测试:
帮我为以下 Python 函数生成 pytest 单元测试:
(粘贴你的函数代码)
要求:
1. 覆盖正常用例(至少3个)
2. 覆盖边界用例(0值、最大值、空值等)
3. 覆盖异常用例(非法输入、类型错误等)
4. 使用 pytest 格式,组织成测试类
5. 每个测试方法加简短注释说明测试意图
生成完直接可以保存为 test_xxx.py 运行。
为整个模块生成测试:
我有一个 Python 模块,文件路径是 /path/to/utils.py
请读取文件,为其中的每个公开函数(不以 _ 开头的)生成单元测试。
要求:
- 每个函数至少3个测试用例
- 关注函数的边界条件和错误处理
- 生成一个 test_utils.py 文件,保存到同目录
生成后告诉我每个函数大概覆盖了哪些场景。
指定测试框架
JavaScript/TypeScript(Jest):
帮我为以下 TypeScript 函数生成 Jest 单元测试:
(粘贴代码)
使用 Jest + TypeScript,包含:
- describe 块组织
- 正常用例、边界用例、异常用例
- mock 外部依赖(如有)
Go:
帮我为以下 Go 函数生成单元测试:
(粘贴代码)
使用 Go 标准库 testing 包,包含:
- Table-driven tests 格式
- 覆盖各种输入情况
- 测试错误返回值
Java(JUnit 5):
帮我为以下 Java 类生成 JUnit 5 单元测试:
(粘贴代码)
要求:使用 @Test, @ParameterizedTest, assertThrows 等现代 JUnit 5 特性。
进阶:根据现有测试补充缺失用例
这是我现有的测试文件:
(粘贴测试代码)
这是被测试的源代码:
(粘贴源代码)
请分析:
1. 当前测试覆盖了哪些场景?
2. 还有哪些重要场景没被覆盖?
3. 为缺失的场景补充测试用例
配合 CI 自动检查测试覆盖率
我的项目里新增了以下文件:
(列出新增/修改的文件路径)
请:
1. 读取这些文件
2. 检查是否有对应的测试文件
3. 如果没有,生成测试文件
4. 如果有,检查是否覆盖了新增的函数/方法
把结果告诉我,没有测试的函数需要我重点关注。
踩坑记录
生成的测试无法运行
症状:生成的测试文件有 import 错误或语法问题。
解法:告诉 OpenClaw假设源文件在同目录,import 路径请根据实际情况调整,然后把错误信息发给 OpenClaw,让它修复。
测试用例太简单
症状:生成的测试只有最基本的用例,缺少边界值。
解法:明确要求重点覆盖边界条件:空字符串、None/null、负数、超大值、特殊字符。
Mock 不对
症状:函数有外部依赖(数据库、HTTP请求),生成的测试没有正确 mock。
解法:在 prompt 里说明这个函数依赖 requests.get 和 db.query,请用对应的 mock 框架处理。
不满意怎么调
- 想要更高覆盖率 → 目标是行覆盖率 90% 以上,请补充更多用例
- 想要性能测试 → 同时生成一个基准测试(benchmark)
- 想要集成测试 → 这是集成测试场景,不要 mock 外部依赖,改为测试真实的数据库调用
- 想要自动运行 → 让 OpenClaw 生成后直接在本地运行
pytest,并报告通过/失败情况
用 AI 替代虚拟助理(VA)
邮件回复、日程安排、信息整理、客户跟进——这些虚拟助理做的事,OpenClaw 能接管大部分,每月省下 VA 费用。
100+ 企业平台一键接入
安装 API Gateway 技能,一口气打通 Google Workspace、Microsoft 365、GitHub、Notion、Slack、HubSpot 等 100+ 平台,统一管理。
数据报表自动生成与定时分发
把你的数据源(Excel/飞书/数据库)接入 OpenClaw,每天/每周自动生成数据报表,并准时发送到对应的人或群,彻底告别"每天早上手动跑数据、发给领导"的重复劳动。"