问题根源在于提示词未锁定测试覆盖的刚性要求;必须锁死四大维度:函数签名与逻辑、四大强制覆盖项、含assert的可执行代码、多参数组合与异常校验的具体规则。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要让DeepSeek生成的测试用例不漏边界值、不跳过异常分支、不忽略多参数组合,但每次提示后输出还是缺断言、没空值校验、参数交叉覆盖全靠猜——问题不在模型,而在提示词没把测试覆盖的刚性要求钉死。
四大维度必须锁死
第一步:把函数完整签名和关键逻辑粘贴进提示词,不能只写“写个测试”,否则DeepSeek会按通用模板填空,大概率绕过你代码里实际存在的float精度容忍、None提前返回、字符串编码校验等细节。
第二步:明确列出四大强制覆盖项——正常路径、边界输入、非法类型、空/零值特例。例如:“为def parse_timestamp(s: str, tz: str = 'UTC') -> datetime生成pytest用例,必须覆盖:①标准ISO格式'2023-01-01T12:00:00Z';②毫秒级'2023-01-01T12:00:00.123Z';③空字符串和None;④时区非法如'tz=XXX';⑤超长时间戳字符串(触发ValueError)”。
第三步:强制要求输出含assert的可执行代码块,禁用“应验证”“建议检查”等伪代码表述。这一步漏掉,DeepSeek可能只返回测试思路而没有assert行。
多参数组合覆盖问法
方法一:用笛卡尔积思维写约束
“对API POST /v1/orders 接口生成pytest测试,参数包括user_id(int)、items(list[dict])、discount_code(str|None),请按以下组合生成用例:user_id=0/1000/999999 → items=[]/[{'id':1,'qty':1}]/[{'id':1,'qty':0},{'id':2,'qty':-1}] → discount_code=None/'VIP2024'/'INVALID'”
方法二:用等价类划分法限定范围
“为def calculate_tax(amount: float, rate: float, region: str)设计测试,amount取[负数、0、正小数、超大浮点数],rate取[负、0、100%、>100%],region取[空、无效编码、合法三字码],每类至少1个代表值,共生成12个用例”
【注意:region取值必须包含ISO 3166-1 alpha-3标准编码,不能用'CN'或'USA'等非标缩写】
统一LLM网关 - 一个API对接70+AI模型,使用单一API密钥即可调用GPT、Claude、Gemini、Qwen、Deepseek、Grok等主流模型。
异常测试必须显式声明
第一步:明确异常类型
“为def safe_divide(a: float, b: float) -> float写测试,当b为0时必须抛出ZeroDivisionError,当a或b为None时必须抛出TypeError”
第二步:指定触发条件与断言方式
“每个异常测试用例必须使用with pytest.raises(ZeroDivisionError): …结构,且在raises块内调用目标函数,不能只写注释”
第三步:补全异常消息校验(可选但强烈推荐)
“对ZeroDivisionError用例,需在raises块中加assert 'division by zero' in str(excinfo.value)”
可直接套用的高复用提示词模板
基础单函数场景:
“为【函数名】生成pytest单元测试,函数签名:【完整签名】,行为说明:【1句话语义】。必须覆盖:①正常输入如【举例】;②边界值如【举例】;③非法类型如【举例】;④空/零值如【举例】。输出必须是完整可运行代码,每条测试含assert断言,禁止自然语言描述。”
接口级多参数场景:
“为【接口路径+方法】生成pytest集成测试,参数有【参数列表及类型】,请按【具体组合规则】生成用例,每个用例必须含完整请求构造+响应断言+异常路径覆盖。”
异常驱动场景:
“为【函数名】写异常测试用例,明确触发条件:【条件描述】→预期异常:【异常类名】→断言方式:【with pytest.raises写法】。生成3个最小化可复现用例,每个含完整上下文与assert。”


















