codebuddy 可通过五种方式生成 pytest 参数化测试:一、自然语言指令触发;二、基于函数签名反向补全;三、使用内建模板填充;四、从 csv/json 导入数据;五、实时校验并修正错误。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您在使用 CodeBuddy 辅助编写 Python 测试代码,但尚未掌握其如何生成符合 pytest 规范的参数化测试用例,则可能是由于未正确触发参数化模板或未提供结构化测试数据。以下是实现该目标的具体方法:
一、通过自然语言指令直接生成带 parametrize 的测试函数
CodeBuddy 支持以自然语言描述测试场景,自动推导出参数名、参数值列表及断言逻辑。该方式依赖清晰的输入输出示例和运算规则说明,确保生成的 @pytest.mark.parametrize 装饰器与函数签名严格匹配。
1、在 VS Code 中打开一个 Python 测试文件(如 test_calc.py)。
2、光标置于空行,按 Ctrl+I(Windows/Linux)或 Cmd+I(macOS)唤起 CodeBuddy 指令面板。
3、输入指令:“为 add(a, b) 函数生成 pytest 参数化测试,输入输出对为:(1,2)→3、(0,0)→0、(-1,1)→0”。
4、确认生成后,检查函数定义是否形如 def test_add(a, b):,且装饰器中字符串参数名为 "a,b",与函数形参完全一致。
二、基于已有函数签名反向补全 parametrize 数据结构
当测试函数已存在但缺少参数化逻辑时,CodeBuddy 可根据函数名、参数名及文档字符串中的示例,自动生成 argvalues 列表并插入装饰器。此方式避免手动构造元组列表时出现类型错位或括号嵌套错误。
1、在函数上方空白处右键,选择 “CodeBuddy: Generate Parametrized Test”。
2、若函数含 docstring 且包含类似 “>>> add(1, 2)\n3” 格式的 doctest 示例,CodeBuddy 将提取所有输入输出对。
3、生成结果中,argvalues 必须为合法 Python 列表,每项为与形参数量相同的元组,不可混用字典或单值。
4、确认生成内容中无多余空格,例如 "a, b" 中的空格将导致参数名识别失败。
三、使用 CodeBuddy 插件内建的 pytest 模板快速填充
CodeBuddy 提供预置 pytest 参数化模板,支持一键插入标准结构,并引导用户替换占位符。该模板强制校验参数名一致性,防止因拼写差异引发 fixture not found 错误。
1、按下 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入 “CodeBuddy: Insert pytest Parametrize Template”。
CodeBuddy Code CLI 的安装、配置与使用指南。CodeBuddy Code 是腾讯推出的 AI 驱动 CLI 编程助手,支持自然语言驱动开发。 - 必备触发词:CodeBuddy, codebuddy, AI CLI, Tencent AI coding, @tencent-ai/codebuddy-code, terminal AI assistant - 适用场景:安装 CodeBuddy CLI、配置 CodeBuddy、使用 CodeBuddy 命令、排查 CodeBuddy 问题
2、选择模板后,编辑器插入如下结构:
@pytest.mark.parametrize("x,y", [(1,2), (3,4)])
def test_example(x, y):
3、将占位符 "x,y" 替换为实际参数名,确保与下方 def 声明中的变量名逐字符完全相同。
4、在方括号内填入测试数据元组,每组元素顺序必须与参数名顺序严格对应。
四、从外部 CSV 或 JSON 文件导入参数值并生成 parametrize
CodeBuddy 支持解析结构化测试数据文件,将其转换为 parametrize 所需的 argvalues 列表。此方式适用于大量测试用例或需版本控制的数据集,避免硬编码污染源码。
1、在项目根目录下创建 data/test_inputs.json,内容为数组格式:[{"input_a": 2, "input_b": 3, "expected": 5}, ...]。
2、在测试文件中光标定位到待生成位置,输入指令:“读取 data/test_inputs.json,为 test_add 生成 pytest.mark.parametrize,映射 input_a→a, input_b→b, expected→expected”。
3、CodeBuddy 自动提取字段并构造元组列表,同时在 ids 参数中注入可读标识如 ids=["2+3=5", "0+0=0"]。
4、检查生成代码中是否含 ids 参数且不含未序列化对象(如 open() 返回的 file 对象),否则运行时报 pickle 错误。
五、利用 CodeBuddy 的实时校验功能修正 parametrize 错误
当已有参数化测试执行失败时,CodeBuddy 可分析错误堆栈,定位常见问题如参数名不匹配、argvalues 类型非法或空列表,并提供修复建议。该功能在保存文件时自动触发,无需手动运行。
1、保存含错误 parametrize 的测试文件,观察底部状态栏是否出现 CodeBuddy 错误提示图标。
2、点击图标,查看建议如:“检测到 @pytest.mark.parametrize('a,b', [...]),但函数定义为 def test_func(x, y) —— 请将 'a,b' 改为 'x,y'”。
3、接受建议后,CodeBuddy 同步更新装饰器字符串与函数签名,确保二者完全一致。
4、若错误提示涉及 “fixture ' y' not found”,需确认参数名字符串中无前导/尾随空格,即使用 "x,y" 而非 "x, y"。










