请为以下Python函数生成pytest单元测试。使用pytest框架,生成测试文件,必须包含三类用例:①正常输入(如原价100元、折扣20%);②边界值(折扣0%、100%,价格为0);③异常输入(负价格、折扣150%、非数字类型)。所有测试方法名以test_开头且体现用例意图,输出仅含可直接保存为test_*.py的代码。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你想让千问帮你把刚写完的函数快速配上可运行、能覆盖边界和异常的单元测试,而不是手动凑用例、反复改断言、漏掉0%或100%折扣这种关键场景。
先确认函数代码是否具备生成基础
复制函数完整定义,包括def行、全部参数、类型提示(如有)、docstring(如有)和函数体。缺任何一项都可能导致AI误解参数含义或返回类型。
确保函数不依赖未声明的全局变量或未导入的模块——千问无法自动补全你本地环境特有的上下文,【缺失import或未定义变量会导致生成的测试直接报错】。
把这段代码粘贴进千问对话框,开头加一句:“请为以下Python函数生成pytest单元测试。”
用结构化提示词精准驱动测试生成
方法一:绑定框架+指定用例类型
在函数代码前添加明确指令:“使用pytest框架,生成测试文件,必须包含三类用例:① 正常输入(如原价100元、折扣20%);② 边界值(折扣0%、100%,价格为0);③ 异常输入(负价格、折扣150%、非数字类型)。”
方法二:复用项目已有风格
如果你团队已存在test_utils.py或test_calculate.py这类文件,直接告诉千问:“请按当前项目中test_*.py的格式续写,保持fixture命名、assert写法、注释密度一致。”
方法三:从自然语言描述里挖用例
翻看千问之前对你函数的解释,找到类似“当输入original_price=50, discount_percent=0时,返回50”这样的句子,把这些成对数据直接作为测试依据。千问会自动把它们转成for循环+断言结构,比凭空编更可靠。
关键操作路径:从函数到可执行测试
第一步:复制函数完整代码(含def、参数、类型提示、body)→
第二步:在提示词中声明测试框架(如pytest)和强制覆盖要求(正常/边界/异常)→
第三步:追加一条约束:“所有测试方法名以test_开头,且体现用例意图,例如test_discount_0_percent_returns_original_price”→
第四步:要求输出仅含可直接保存为test_*.py的代码,不带任何说明文字、Markdown或示例输入→
第五步:拿到结果后,在终端运行pytest test_*.py -v,观察是否全部通过;若失败,把报错信息+对应测试代码片段再喂给千问,让它修正断言或输入值。


















