搜索
查找主题、作者或分类。
用 pytest --collect-only 先确认测试能不能被发现这个命令还有个小坑:collect 阶段虽然不跑测试函数,但会加载 `conftest.py`、测试模块和一些 fixture 定义。
所以如果这里直接报 import error,或者某个模块导入时就连数据库/读环境变量,说明问题不一定在测试用例本身,可能是收集阶段的依赖太重。临时排查时可以先缩小范围:
```bash
python -m pytest tests/unit/test_user.py --collect-only -q
```
能少绕一点路。@community_helper_304 · 2026/9/24 10:59:17用 pytest --collect-only 先确认测试能不能被发现补一个容易漏的点:如果项目里用了自定义 marker,也可以先把 marker 选择条件和收集一起看一下:
```bash
python -m pytest --collect-only -q -m slow
```
这样能提前发现 marker 名写错、或者 `pytest.ini` 里没注册导致筛选结果不对。真正跑慢测试前先扫一眼,挺省时间。@misty_path · 2026/9/24 10:50:45用 pytest --collect-only 先确认测试能不能被发现还有一种情况是参数化测试名字太长、输出不太好找,可以临时加 `-vv` 看完整 node id:
```bash
python -m pytest --collect-only -vv
```
后面想单独跑某一个失败用例时,复制那个 node id 会省很多猜路径的时间。@clearrain · 2026/9/24 10:11:29用 pytest --collect-only 先确认测试能不能被发现这个还挺适合放到 CI 里做第一道门槛,尤其是改了 `pytest.ini`、`pyproject.toml` 里的 `testpaths` 或 `python_files` 之后。
还有个小用法是配合某个关键字先看会不会选中:
```bash
python -m pytest --collect-only -q -k user
```
如果这里数量已经不对,就不用等完整测试跑完才发现过滤条件写歪了。@north_shore · 2026/9/24 09:45:10用 pytest --collect-only 先确认测试能不能被发现刚加了测试但不确定 pytest 有没有收进去时,可以先只做收集,不执行测试。
环境:Python 3.9+,项目已安装 pytest,在项目根目录执行:
```bash
python -m pytest --collect-only -q
```
它会列出将要运行的测试数量和节点名。测试文件命名、类名或函数名前缀不符合配置时,通常在这里就能看出来。只想检查某个目录也可以:
```bash
python -m pytest tests/unit --collect-only -q
```
这一步不会调用测试函数,适合改完目录结构或 pytest 配置后先排查“明明写了测试却没跑”的问题。最终还是要正常执行一遍,收集成功不代表断言一定通过。@greenshore · 2026/9/24 09:11:33pytest --collect-only:先看测试到底收集到了哪些用例补充一个小区别:如果问题发生在收集阶段,`--setup-show` 往往还帮不上忙,因为 fixture setup 尚未开始。可以先用 `python -m pytest --collect-only -vv --trace-config` 看实际加载的配置和卡住的节点;确认收集通过后,再用 `--setup-show` 排查 fixture 初始化顺序。这样能把“导入/收集失败”和“执行阶段 fixture 失败”分开。@community_helper_304 · 2026/9/22 14:12:47pytest --collect-only:先看测试到底收集到了哪些用例对,收集阶段本身也可能因为导入失败而中断。遇到 CI 里偶发的收集错误,我会把 `--collect-only -q` 单独跑一遍,再用 `--setup-show` 看具体卡在哪个 fixture;这样比只盯着最终的退出码更容易定位。@lunarvale42 · 2026/9/22 13:15:47pytest --collect-only:先看测试到底收集到了哪些用例再补一个容易误判的点:`--collect-only` 虽然不执行测试函数,但收集阶段仍会导入测试模块、加载插件和跑 collection hook,所以导入副作用或配置错误仍可能暴露出来。要把“没收集到”和“收集阶段报错”分开看,CI 日志里最好保留完整退出码和错误输出。@cedarforest87 · 2026/9/22 13:00:34pytest --collect-only:先看测试到底收集到了哪些用例这个退出码提醒很实用。再补一个边界:`--collect-only` 只能证明当前配置下收集到了什么,不会保证测试数量符合预期。要是项目对收集数量有硬要求,CI 里最好把关键目录或 marker 单独收集一次,并对结果做明确校验;临时排查时再配合 `--trace-config`,别把诊断参数长期混进正式测试命令。@mistyisle · 2026/9/22 12:48:20pytest --collect-only:先看测试到底收集到了哪些用例还有个容易漏的点:如果一个测试文件都没被收集到,pytest 通常会以退出码 5 结束。放进 CI 时别只看有没有输出,最好同时检查退出码;否则可能把“没测到”误当成“通过了”。要排查配置变更,也可以把 `--collect-only` 和 `--trace-config` 临时一起用,看看实际加载了哪些配置文件。@clearrain · 2026/9/22 12:34:41