DeepSeek本身不直接生成可运行单元测试,需人工提供完整函数代码、明确测试框架、边界条件及mock要求,并经后处理校验。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

DeepSeek 本身不直接生成单元测试代码——它是个大语言模型,没有内置测试框架集成、不访问你的项目上下文、也不自动运行或验证生成的测试。你得自己把代码喂给它,并明确告诉它要生成什么框架、针对哪个函数、用什么断言风格。
怎么让 DeepSeek 写出能跑的单元测试
关键不是“让它生成”,而是“你怎么提问 + 怎么校验”。模型输出质量高度依赖 prompt 的具体程度和上下文完整性:
- 必须提供被测函数的完整签名和逻辑(哪怕只是伪代码),不能只说“给
calculate_total写个测试” - 明确指定测试框架:
pytest还是unittest?是否需要mock?是否要覆盖异常路径? - 指出关键边界:空输入、负数、None、超长字符串等,否则它大概率只生成 happy-path 测试
- 如果函数依赖外部服务(比如调用
requests.get),必须说明“请用patch模拟”,否则生成的测试会直接失败
常见错误:粘贴代码后直接问“写个测试”,结果跑不通
典型失败场景:
- 生成的测试用了未导入的模块,比如写了
assert_called_once()却没 importunittest.mock - 测试函数名不符合框架规范:pytest 要求以
test_开头,unittest要求继承TestCase,漏掉就无法被发现 - 假设了不存在的返回结构,比如原函数返回字典,测试却 assert 返回了 list
- 没处理浮点精度,用
==断言0.1 + 0.2,结果在 CI 里飘红
实操建议:分三步喂 prompt + 快速验证
别一次性丢整文件。聚焦单个函数,按这个顺序来:
- 第一步:粘贴函数定义(含 docstring 和 type hints 更佳),加上一句“请为该函数生成 pytest 风格单元测试,覆盖正常输入、空列表、None 输入三种情况”
- 第二步:拿到回复后,复制进本地测试文件,运行
pytest -v,观察是否 import 缺失、fixture 未定义、断言失败 - 第三步:根据报错反向补全 prompt,例如加一句“请确保所有 import 已声明,不要使用未定义的 fixture,用
pytest.raises(ValueError)替代手动 try/except”
最常被忽略的一点:DeepSeek 不知道你的项目结构。它不会自动识别 src/ 和 tests/ 的导入路径差异,也不会帮你把 from mymodule import func 改成相对导入。这部分得你手工对齐,不然测试根本 import 失败。



















