Есть ли способ исключить pytests, отмеченные pytest.mark
, из запуска во время хука перед фиксацией?
В частности, я хотел бы исключить тесты, помеченные как интеграционные.
Содержимое тестов выглядит так
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]
Это pytest -m "not integration"
для исключения integration
pytestmark или pytest -k "not integration"
для исключения всех имен файлов, содержащих "integration"
.
Верно - и я понимаю, что вам нужно первое. Это был вопрос?
Извините, я неправильно понял ваш вопрос. Как мне добавить аргумент командной строки, показанный выше, в файл .yaml
предварительной фиксации?
Как я уже писал, я не знаком с синтаксисом - я думал, что вы можете добавить его в раздел entry
, но, возможно, я ошибаюсь.
Спасибо, вы правы. entry: pytest -m "not integration" test/
исключает integration
pymark.
2c: не рекомендуется запускать тесты как часть pre-commit
— по моему опыту, они будут слишком медленными, и ваши участники могут расстроиться и полностью отключить фреймворк.
тем не менее, это должно быть так же просто, как добавление аргументов, которые вы хотите, либо к entry
, либо к args
- лично я предпочитаю entry
при работе с repo: local
хуками (поскольку нет ничего, что «обычно» переопределяло бы 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]
отказ от ответственности: я создал предварительную фиксацию и являюсь основным разработчиком pytest
Я не знаком с синтаксисом
pre-commit-config.yaml
, но не могли бы вы просто добавить сюда соответствующие параметры командной строки? Например. что-то вродеpytest -m "not integration" test/
?