DeepSeek可自动生成Python函数的单元测试代码:在PyCharm中通过Continue插件一键生成测试骨架,支持自然语言描述、doctest转换、parametrize批量覆盖及Mock外部依赖。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

当你用DeepSeek生成了一个Python函数,却没配套的单元测试代码,上线后逻辑错误可能要等用户投诉才发现。手动补测试耗时费力,而DeepSeek本身就能根据函数签名、文档字符串和行为特征,直接产出可运行的测试用例。
在PyCharm中一键生成测试骨架
确保已安装Continue插件并成功绑定DeepSeek API Key。
打开含目标函数的.py文件 → 将光标置于函数名上 → 右键 → 选择 Generate → DeepSeek Test。
在弹出对话框中输入自然语言描述,例如:“为parse_json_string生成覆盖空字符串、非法JSON、正常对象的测试” → 点击Submit。
IDE自动插入完整test_*.py内容,含类定义、setUp方法及多个带断言的测试方法。注意:生成的assert语句默认用self.assertEqual,若函数可能抛异常,需手动改用self.assertRaises。
用文档字符串里的>>>示例反推测试用例
方法一:提取doctest片段
找到函数docstring中所有以>>> 开头的调用行,及其紧随其后的结果行(包括... 续行和Traceback )。
方法二:转成pytest断言
把>>> add_numbers(2, 3) → self.assertEqual(add_numbers(2, 3), 5);把>>> divide(10, 0) → self.assertRaises(ZeroDivisionError, lambda: divide(10, 0))。
【必须严格匹配类型和空格】比如返回字符串" hello ",测试里写"hello"就会失败。
用pytest.mark.parametrize批量覆盖边界值
第一步:识别参数敏感点
统一LLM网关 - 一个API对接70+AI模型,使用单一API密钥即可调用GPT、Claude、Gemini、Qwen、Deepseek、Grok等主流模型。
检查函数参数是否涉及数值范围、字符串长度、None/空值、嵌套结构深度等易出错维度。
第二步:构造输入-输出元组列表
例如对len_filter函数:[(["a", "bb"], 2), (["x"], 1), ([], 0), (["", None], 0)]。
第三步:添加装饰器并编写断言
在测试方法上方写:@pytest.mark.parametrize("input_list,expected", [(["a", "bb"], 2), (["x"], 1), ([], 0), (["", None], 0)]),方法体内写self.assertEqual(len_filter(input_list), expected)。
这一步操作起来很简单,直接把元组列表粘贴过去就行。
Mock外部依赖生成隔离测试
当函数调用requests.get或datetime.now()这类不可控外部服务时,必须Mock。
在测试方法顶部加@patch("module_name.requests.get"),装饰器参数路径必须与被测函数内import路径完全一致。
在方法签名中接收mock对象,例如def test_fetch_data(self, mock_get):。
设置mock返回值:mock_get.return_value.json.return_value = {"status": "ok"}。
调用被测函数并断言结果,同时检查mock是否按预期被调用一次:mock_get.assert_called_once_with("https://api.example.com")。


















