测试用例生成器(test-gen)
把 Python 源码函数 转成 pytest 测试用例,纯本地离线运行,零联网。
核心差异化(对标头部测试工具)
- 竞品弱点:多数测试工具是 SaaS 在线生成(如 Testim、Mabl),需上传代码;或靠 LLM 提示词生成,不可校验。
- 我们:确定性 AST 解析——不靠幻觉,直接解析函数签名 + 返回值类型 + 边界值,输出可验证的测试用例。
- 复刻超越点:
1. 边界值自动推断:基于类型注解生成 int/float/str/bool 的边界值(0, 1, -1, inf, None 等)。
2. 返回值类型断言:自动生成isinstance(result, 返回类型)断言。
3. 类型兼容性测试:检测参数类型是否可能传入非预期值。
4. 覆盖率提示:每个用例标注覆盖的边界场景。
快速开始
# 演示模式(内置示例函数)
python3 scripts/test_generator.py --demo
# JSON 结构化输出
python3 scripts/test_generator.py --demo --json
# 解析真实 Python 文件
python3 scripts/test_generator.py --file your_module.py
# JSON 输出(供自动化消费)
python3 scripts/test_generator.py --file your_module.py --json
生成内容
每个函数自动生成:
- 正常参数测试:传入各参数类型的典型默认值
- 边界值测试:基于类型注解推断(int 的 0/1/-1/MaxInt,float 的 inf,str 的空串/None)
- 类型兼容性测试:传入非预期类型(如 None 给 int)
- 返回值类型断言:assert isinstance(result, 返回类型)
何时使用本技能
用户说以下任一即触发:
- 「生成测试 / 测试用例 / 单元测试」
- 「帮我写 pytest 测试」
- 「边界值测试」
- 「把这个模块的测试生出来」
已知边界
- 仅支持 Python 3.x(使用
ast标准库)。 - 不支持 C 扩展、Cython 编译模块。
- 装饰器标记为
@staticmethod、@classmethod的函数仍会生成测试,需手动调整。 - 示例值为类型推断的占位,需根据实际业务逻辑补充断言。