【问题标题】:Python pre-commit unittest faildPython预提交单元测试失败
【发布时间】:2020-04-09 00:12:16
【问题描述】:

我希望 pre-commit 在提交我的代码之前运行测试。
命令python -m unittest discover 正在命令行中运行。

D:\project_dir>python -m unittest discover
...
...
...
----------------------------------------------------------------------
Ran 5 tests in 6.743s

OK

但是当我尝试提交时,我得到了

D:\project_dir>git commit -m "fix tests with hook"
run tests................................................................Failed
hookid: tests

usage: python.exe -m unittest discover [-h] [-v] [-q] [--locals] [-f] [-c]
                                       [-b] [-k TESTNAMEPATTERNS] [-s START]
                                       [-p PATTERN] [-t TOP]
python.exe -m unittest discover: error: unrecognized arguments: bigpipe_response/processors_manager.py
usage: python.exe -m unittest discover [-h] [-v] [-q] [--locals] [-f] [-c]
                                       [-b] [-k TESTNAMEPATTERNS] [-s START]
                                       [-p PATTERN] [-t TOP]
python.exe -m unittest discover: error: unrecognized arguments: tests/test_processors.py

这是我的.pre-commit-config.yaml 文件。

-   repo: local
    hooks:
    -   id: tests
        name: run tests
        entry: python -m unittest discover
        language: python
        types: [python]
        stages: [commit]

对于语言,我尝试使用system。我得到了同样的结果。

我该如何解决这个问题?请帮忙。

【问题讨论】:

  • 你用什么程序来运行这个预提交钩子?
  • @magikid 你说的什么程序是什么意思?
  • git 本身并不理解您的 .pre-commit-config.yaml 文件。所有 git 理解的都是 .git/hooks/ 文件夹中的脚本。看起来使用这个文件的程序是pre-commit 程序。

标签: python git python-unittest pre-commit-hook pre-commit.com


【解决方案1】:

您可以尝试以下 YAML。当然,如果您使用不同的模式,您应该更改args 选项中的模式。

-   id: unittest
    name: unittest
    entry: python -m unittest discover 
    language: python
    'types': [python]
    args: ["-p '*test.py'"] # Probably this option is absolutely not needed.
    pass_filenames: false
    stages: [commit]

您应该将pass_filenames 参数设置为false,因为在其他情况下,文件将作为参数传递,并且正如您在问题中提到的,这些是“无法识别的”参数。

【讨论】:

  • 谢谢@milanbalazs,这很有帮助。确实是pass_filenames: false
猜你喜欢
  • 1970-01-01
  • 2018-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-12
  • 1970-01-01
  • 2012-10-09
  • 2017-12-20
相关资源
最近更新 更多