Ошибка предварительной фиксации Python unittest
Хочу 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
. Получил тот же результат.
Как я могу это решить? Пожалуйста помоги.
2 ответа
Вы можете попробовать следующий 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]
Вы должны установить false
в pass_filenames
параметр, потому что в другом случае файлы будут переданы в качестве аргументов, и, как вы упомянули в своем вопросе, это "нераспознанные" параметры.
Принятый ответ не будет работать, если ваше приложение зависит от некоторых пакетов. В этом случае
language:python
настройка позволяет предварительно использовать пользовательскую виртуальную среду (в
~/.cache
папка), что вы можете добавить зависимости с помощью
additional-dependencies
флаг. Однако обычно это означает копирование содержимого файла «requirements.txt».
Итак, чтобы использовать виртуальную среду вашего приложения, вы должны установить
language:system
настройки и поместите свои тесты в
repo: local
. Затем используется виртуальная среда, которая активируется при запуске перехватчиков предварительной фиксации.
Рабочая конфигурация будет выглядеть так:
- repo: local
hooks:
- id: unittests
name: run unit tests
entry: python -m unittest
language: system
pass_filenames: false
args: ["discover"]