pytest --cov 在命令行中显示详细报告,但在 githook 预提交期间不显示

pytest --cov shows detailed report in command line, but not during githook pre-commit

当我运行pytest src/packages --cov --cov-branch --cov-report term-missing时,我用Stmts得到一份详细的报告|小姐 |分支机构 |分部 |封面 |如下面的屏幕截图所示缺失:

Report in Command Line Working

但是,当我 运行 pre-commit run pytest-cov-src-packages (或 git 提交)使用如下所示的预提交挂钩时,我只得到一个“pytest-cov-src-packages. ...................................................通过" 命令行中的语句。没有报告或任何东西。刚刚通过。

  - id: pytest-cov-src-packages
    name: pytest-cov-src-packages
    language: system
    entry: pytest src/packages --cov --cov-branch --cov-report term-missing 
    types: [python]
    stages: [commit]
    pass_filenames: false
    always_run: true

为什么 运行在命令行中使用 pytest 与触发条目:来自预提交的片段会产生不同的结果有什么原因吗?作为 git 提交的一部分,我希望在命令行中获得详细报告,如图所示,在预提交过程中工作。

谢谢!

Is there any reason why running pytest in command line vs. firing off the entry: snippet from the pre-commit yields a different result?

因为pre-commit经常被配置为运行很多测试,它被设计成默认提供摘要输出。您的 pre-commit 条目产生的任何输出都会被成功测试丢弃;您只会在失败时看到输出。

如果您总是想要查看输出,您可以运行pre-commit使用-v标志。

比较:

$ pre-commit run --all-files
pytest-cov-src-packages..................................................Passed

有:

$ pre-commit run --all-files -v
pytest-cov-src-packages..................................................Passed
- hook id: pytest-cov-src-packages
- duration: 0.21s

============================= test session starts ==============================
platform linux -- Python 3.10.4, pytest-7.1.2, pluggy-1.0.0
rootdir: /home/lars/tmp/python
plugins: cov-3.0.0
collected 1 item

test_foo.py .                                                            [100%]

---------- coverage: platform linux, python 3.10.4-final-0 -----------
Name          Stmts   Miss Branch BrPart  Cover   Missing
---------------------------------------------------------
test_foo.py       2      0      0      0   100%
---------------------------------------------------------
TOTAL             2      0      0      0   100%


============================== 1 passed in 0.04s ===============================