Skip to content
Back to skills

Test Generator

ASecurity

自动生成单元测试:识别函数逻辑、覆盖边界条件、生成可运行测试代码

  • 876 stars
  • 0 votes
  • 0 copies
  • 6 views
  • Added May 26, 2026
testingjavascriptpythongojavatestingapi

Works with

  • api

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add laolaoshiren/claude-code-skills-zh --skill test-generator --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Test Generator?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Test Generator
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/laolaoshiren-test-generator/badge)](https://www.skillsdirectory.com/skills/laolaoshiren-test-generator)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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. **渐进式**:先覆盖核心路径,再补充边界条件

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.