pycharm 默认用 unittest 运行测试,需手动配置 pytest:确认 interpreter 中已安装 pytest(建议 8.2+),在 settings → tools → python integrated tools → testing 中将 default test runner 设为 pytest,确保测试文件名(test_.py 或 _test.py)、函数名(test_)和类名(test)符合命名约定,且点击 apply 保存配置。

PyCharm 默认用 unittest 运行测试,哪怕你装了 pytest,右键“Run”也大概率会报 ImportError: No module named 'pytest' 或直接找不到测试函数——这不是你代码写错了,是 PyCharm 根本没认出你在用 pytest。
怎么确认 pytest 已安装且被 PyCharm 识别
别只在终端里跑 pip install pytest 就完事。PyCharm 可能压根没用那个环境:
- 打开
File → Settings → Project → Python Interpreter(macOS 是PyCharm → Preferences),看已安装包列表里有没有pytest - 如果没有,点右上角
+,搜pytest并安装;如果已有但版本旧(比如pytest 6.x),建议升级到pytest 8.2+(兼容 Python 3.12+,避免DeprecationWarning) - 装完别关窗口,留意右下角是否弹出“pytest detected, set as default test runner?”提示——点
Yes,它会自动帮你切配置;不弹就手动下一步
必须改的设置:Default test runner
这个选项藏得深,但改错或漏改,所有后续操作都白搭:
PyCharm 2026.2是 JetBrains PyCharm 的指定版本安装包,下载地址指向官方 Windows 安装包直链,可用于旧项目兼容、版本回退和环境测试。
- 路径:
Settings → Tools → Python Integrated Tools → Testing → Default test runner - 下拉框里选
pytest,不是Unittests,也不是空着 - 下方
Test path留空即可(PyCharm 会自动扫描test_*.py和*_test.py);如果项目结构特殊(比如测试文件全在tests/目录),才填相对路径如tests - 改完点
Apply,**不要只点 OK** —— Apply 才真正写入配置,OK 只关闭窗口
右键运行失败?检查文件和函数命名规则
PyCharm 的 pytest 探测器很“死板”,不符合约定就直接跳过:
- 测试文件名必须匹配
test_*.py或*_test.py(例如test_math.py✅,math_test.py✅,math_tests.py❌) - 测试函数名必须以
test_开头(例如def test_add():✅,def check_add():❌) - 如果用了类,类名必须以
Test开头(例如class TestCalculator:✅,class CalculatorTest:❌) - 函数里不能有参数(除非你配了 fixture),否则 PyCharm 会静默忽略该函数
运行时加参数(比如 -x 或 --tb=short)
想让失败时立刻停、或者看精简错误堆栈?不能只靠右键,得进运行配置:
- 右键测试文件 →
Run 'pytest in xxx.py'后,点顶部菜单Run → Edit Configurations - 左侧选中刚创建的配置(名字类似
pytest in test_math.py),右侧找到Add parameters输入框 - 填
-x --tb=short(中间空格分隔),保存后下次右键运行就生效 - 注意:全局默认参数要设在
Settings → Tools → Python Integrated Tools → Testing → Additional arguments,但建议只放项目级必需参数,避免污染其他项目
最常被忽略的一点:PyCharm 的测试探测是基于当前 interpreter 的包环境 + 命名约定 + 配置项三者同时满足才触发的。少一个环节,它就当你没写测试——不是它坏了,是你没喂对信号。










