自动生成单元测试:识别函数逻辑、覆盖边界条件、生成可运行测试代码
Scanned 5/27/2026
Install via CLI
openskills install laolaoshiren/claude-code-skills-zh---
name: test-generator
description: 自动生成单元测试:识别函数逻辑、覆盖边界条件、生成可运行测试代码
---
# 测试生成器
## 触发条件
当用户要求"生成测试"、"写单元测试"、"为 XX 函数写测试"、"增加测试覆盖率"时激活此技能。
## 工作流程
### 1. 分析目标代码
- 读取目标文件,识别函数/类的输入输出
- 分析参数类型、返回值、副作用
- 识别依赖关系(数据库、API、文件系统等)
### 2. 确定测试策略
- **纯函数**:参数化测试,覆盖正常/边界/异常输入
- **类方法**:测试初始化、正常调用、状态变化
- **异步函数**:测试成功路径、超时、网络错误
- **含副作用的函数**:使用 mock/stub 隔离依赖
### 3. 生成测试用例
每个函数至少覆盖:
- ✅ 正常输入(happy path)
- ⚠️ 边界条件(空值、零值、极大值、空字符串/数组)
- ❌ 异常输入(类型错误、格式错误)
- 🔗 依赖失败(网络超时、数据库异常)
### 4. 输出格式
根据项目语言和测试框架生成对应代码:
#### Python (pytest)
```python
import pytest
from mymodule import my_function
class TestMyFunction:
def test_normal_input(self):
assert my_function("hello") == "HELLO"
def test_empty_string(self):
assert my_function("") == ""
def test_none_input(self):
with pytest.raises(TypeError):
my_function(None)
def test_special_characters(self):
assert my_function("你好!@#") == "你好!@#"
```
#### JavaScript (Jest)
```javascript
const { myFunction } = require('./mymodule');
describe('myFunction', () => {
test('正常输入', () => {
expect(myFunction('hello')).toBe('HELLO');
});
test('空字符串', () => {
expect(myFunction('')).toBe('');
});
test('null 输入', () => {
expect(() => myFunction(null)).toThrow(TypeError);
});
});
```
#### Go (testing)
```go
package mypackage
import "testing"
func TestMyFunction(t *testing.T) {
tests := []struct {
name string
input string
want string
}{
{"正常输入", "hello", "HELLO"},
{"空字符串", "", ""},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := MyFunction(tt.input); got != tt.want {
t.Errorf("MyFunction(%q) = %q, want %q", tt.input, got, tt.want)
}
})
}
}
```
## 测试命名规范
- 中文项目:`test_函数名_场景描述` 或 `函数名_正常输入/边界条件/异常输入`
- 英文项目:遵循项目现有命名风格
## 最佳实践
1. **先读再写**:理解代码逻辑后再生成测试,不要盲目覆盖
2. **独立性**:每个测试独立运行,不依赖执行顺序
3. **可读性**:测试名即文档,一看就知道测什么
4. **适度 mock**:外部依赖必须 mock,内部逻辑尽量不 mock
5. **渐进式**:先覆盖核心路径,再补充边界条件
No comments yet. Be the first to comment!
Practical guide to testing web applications with screen readers for comprehensive accessibility validation.
克劳德代码会话的正式评估框架,实施评估驱动开发(EDD)原则
Go测试模式包括表格驱动测试、子测试、基准测试、模糊测试和测试覆盖率。遵循TDD方法论,采用地道的Go实践。
使用pytest、TDD方法、夹具、模拟、参数化和覆盖率要求的Python测试策略。
在编写新功能、修复错误或重构代码时使用此技能。强制执行测试驱动开发,包含单元测试、集成测试和端到端测试,覆盖率超过80%。