从预提交挂钩中排除 pytest files/marks

Excluding pytest files/marks from pre-commit hooks

有没有办法在预提交挂钩期间从 运行 中排除标有 pytest.mark 的 pytest? 特别是,我想排除标记为集成测试的测试。

一个测试的内容是这样的

pytestmark = [pytest.mark.integration, pytest.mark.reporting_api]

### some tests

并且 .pre-commit-conifg.yaml pytest 配置是

-   repo: local
    hooks:
    -   id: pytest
        name: pytest
        entry: pytest test/
        language: system
        pass_filenames: false
        types: [python]
        stages: [commit, push]

2c:运行 测试作为 pre-commit 的一部分不是一个好主意——根据我的经验,它们会太慢,你的贡献者可能会感到沮丧并关闭完全框架

就是说,它应该像将您想要的参数添加到 entryargs 一样简单——就我个人而言,在使用 repo: local 时我更喜欢 entry钩子(因为没有什么可以“按惯例”覆盖 args

在你的情况下,这看起来像:

-   repo: local
    hooks:
    -   id: pytest
        name: pytest
        entry: pytest test/ -m 'not integration and not reporting_api'
        language: system
        pass_filenames: false
        types: [python]
        stages: [commit, push]

免责声明:我创建了 pre-commit 并且我是 pytest 核心开发人员