发布于2026-07-03 阅读(0)
扫一扫,手机访问
Sublime Text 本身并不具备运行测试的能力——它干的是"调用外部命令"的活,比如 `pytest`、`jest`。所以,所谓"批量运行所有测试用例",本质上就是让 Sublime 的构建系统正确识别并执行项目中所有符合规范的测试文件。听起来简单,但不少人在这一步就卡住了。

默认构建系统里(比如你手动配的那个 pytest.sublime-build),"cmd" 里写着 ["pytest", "$file", "-v"]——这个 $file 是单文件路径变量,不是通配符,也不会自动展开成 test_*.py 或递归扫描目录。这是最容易被忽略的一点:你以为点了构建就是"跑全部测试",实际上它只跑了你当前打开的哪个文件。
$file 是空值,构建要么失败,要么静默退出。pytest 本身支持传入目录路径(比如 pytest tests/),但构建系统必须显式地把它写进去,不能指望它自己"猜"出要扫哪些目录。新建一个 pytest-all.sublime-build 文件,内容长这样:
{
"cmd": ["pytest", "tests/", "-v", "--tb=short"],
"working_dir": "${project_path:${folder}}",
"selector": "source.python",
"variants": [
{
"name": "pytest with coverage",
"cmd": ["pytest", "tests/", "--cov=src", "--cov-report=term-missing", "-v"]
}
]
}
tests/ 是常见目录名,根据项目结构调整,比如 test/、src/tests/。working_dir 必须设为项目根目录,否则 pytest 找不到被测代码或者 conftest.py。--tb=short 能让错误堆栈短一些,关键错误信息不会被刷屏淹没。tests/ 目录,可以改成 pytest . -v -p no:warnings,让 pytest 从当前目录递归搜索 test_*.py。碰到 ImportError: No module named 'myapp' 这种报错,不是包没装,而是 Python 路径没对上。pytest 启动时 sys.path 里没有包含你的源码目录。
"env": {"PYTHONPATH": "${project_path:${folder}}/src"},把 src 换成你放 __init__.py 的那个目录。python -m pytest 替代直接调 pytest。因为 python -m 会自动把当前目录加入 sys.path,很多路径问题由此迎刃而解。python -m pytest tests/,成功了再同步到构建系统里。先把路试通,再写进配置。实在不想动配置文件,也可以走临时路子——直接在 Sublime 控制台(Ctrl+`)里粘贴一行 Python 代码:
import subprocess; subprocess.run(["python", "-m", "pytest", "tests/", "-v"])
PYTHONPATH。说到底,最容易被忽略的是 working_dir 和 PYTHONPATH 的组合效果:少一个,pytest 就可能既找不到测试文件,也 import 不了被测模块。别只盯着命令行参数怎么写,路径上下文才是批量运行成败的关键。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8