codegeex生成测试用例需满足三前提:项目含正确pytest配置(pyproject.toml中tool.pytest区块完整)、pytest已安装且可执行、vs code解释器识别conftest.py;光标须置于def行才准确提取函数信息。

CodeGeex 生成的测试用例能直接跑通,前提是它“看懂”了你的项目——不是靠猜,而是靠真实存在的配置文件、可识别的 fixture 定义、以及已安装的测试运行器。
为什么右键“Generate Unit Test”后报错 ImportError 或 test_ 函数名不对
CodeGeex 不会自己推断你用的是 pytest 还是 unittest,它只读取项目根目录下的 pyproject.toml 或 setup.cfg 中明确声明的测试配置。如果文件缺失,或 [tool.pytest] 区块没写全(比如漏了 testpaths 或 python_files),生成的测试就会:
• 缺少必要 import(如没加 import pytest 或 from unittest.mock import patch)
• 命名不符合当前项目约定(例如项目用 test_*.py,却生成了 *_test.py)
• 漏掉 custom fixture(如 @pytest.fixture(scope="session") 在 conftest.py 里定义了但未被识别)
确保 conftest.py 位于 tests/ 目录或其父级,并且 VS Code 的 Python 解释器已加载该路径
pytest 风格测试生成失败的三个硬性检查点
CodeGeex 对 pytest 的支持依赖三件事同时成立:
• python -m pytest --version 在终端中能成功输出版本号;若报 No module named pytest,必须先执行 pip install pytest pytest-mock
• 项目根目录存在 pyproject.toml,且含完整区块:
[tool.pytest] testpaths = ["tests"] python_files = ["test_*.py"] addopts = ["-v", "--tb=short"]• VS Code 状态栏右下角的 CodeGeex 图标为蓝色且显示
Online,点击头像确认账号状态为 Authenticated
光标位置决定生成质量,不是随便放在函数里就行
触发 CodeGeeX: Generate Unit Test 时,光标必须落在 def 行任意位置(包括缩进、注释前、空格后),不能在函数体内部或 docstring 里。否则模型无法准确提取函数签名、类型注解和 Raises 说明。
常见失效场景:
• 光标停在 """Example: add(1, 2) → 3""" 这行上 → 生成的测试不包含该用例
• 函数带泛型或复杂类型注解(如 def process(items: list[dict[str, Any]])),但未启用 PEP 563(from __future__ import annotations)→ 类型信息丢失,mock 行为出错
• 函数调用了模块级变量或全局配置,但没在上下文中暴露 → 生成的测试缺少 monkeypatch.setattr 或 caplog 等 fixture 使用
真正卡住人的从来不是“会不会点右键”,而是配置文件里少了一行 testpaths,或者 conftest.py 被 VS Code 的 Python 解释器忽略了——这些细节不显眼,但一错就全崩。











