为刚写完的 Python 函数快速生成单元测试——自动覆盖边界值、异常路径和典型输入,有效避免手动漏写空字符串、None、负数这些常见“坑”。借助 CodeGeeX,你就能轻松完成这项任务,而且操作路径非常直接。

在 VS Code 中一键生成 Pytest 测试
打开包含目标函数的 .py 文件,将光标放在 def 那一行的任意位置——比如 def calculate_discount(price: float, discount_rate: float) -> float:。右键单击,选择 “CodeGeeX: Generate Unit Test”,测试代码便会自动追加到文件末尾。函数名会默认命名为 test_calculate_discount,其中包含 import pytest 和至少 3 组断言:正常浮点数、零值输入、以及折扣率超过 100% 的异常场景。
不过有一点需要注意:如果函数带有类型提示但尚未安装 mypy 或 pyright,CodeGeeX 可能会对参数范围的判断出现偏差——此时建议手动补充一条 assert price >= 0,防止负价格被意外传入。
使用注释指令精确控制测试生成风格
如果你希望测试生成过程更可控,可以用注释来“点拨”一下。方法很简单:在函数上方紧挨着写一行注释,比如:# @codegeex generate pytest test --parametrize price,discount_rate。或者写一段 GoDoc 风格的 docstring:
"""Calculate final price after discount.
Args:
price: must be >= 0
discount_rate: between 0.0 and 1.0 inclusive
Raises:
ValueError: if price < 0 or discount_rate out of range
"""
然后按下 Ctrl+Enter(Windows/Linux)或 Cmd+Enter(macOS),即可触发生成。这里有个关键细节:注释和 def 之间不能有空行,否则 CodeGeeX 会直接忽略掉注释——空行会导致注释被忽略,这一点务必牢记。
在 JetBrains IDE 中生成 Java 单元测试
使用 JetBrains 产品(IntelliJ IDEA、PyCharm 等)的朋友也不用着急,操作流程类似但略有差异。先进入 Settings → Tools → CodeGeeX,填入有效的 API Key 或者本地服务地址 http://127.0.0.1:8080。然后在编辑器中选中完整的函数定义——从 public static double calculateDiscount(...) 到右大括号闭合。右键 → “Generate Unit Test with CodeGeeX”。
生成结果默认采用 JUnit 5 风格,包含 @Test 注解和 Assertions.assertEquals 断言。如果原函数抛出了 IllegalArgumentException,测试里会自动生成 @Test(expected = IllegalArgumentException.class) 分支,覆盖异常路径。
通过命令行批量生成测试(适用于 CI/CD 场景)
在自动化流水线环境下,或者你更习惯命令行操作,可以使用 codegeex-cli 工具。安装方法:pip install codegeex-cli。然后执行:codegeex-cli test --file ./src/utils.py --function calculate_discount --framework pytest。该命令会解析抽象语法树(AST),提取所有的分支路径——比如 if price < 0: 和 elif discount_rate > 1.0: 对应的异常测试用例,最终输出到 ./tests/test_utils.py。
有个细节值得注意:如果源文件中包含中文注释或中文 docstring,CLI 会跳过解析——必须使用英文注释才能触发分支识别。这一规则在团队协作中尤其需要提前约定。
