Как сообщить py.test пропустить определенные каталоги?

Я попытался использовать параметр norecursedirs внутри setup.cfg, чтобы сообщить py.test, что для сбора тестов из определенных каталогов, но, похоже, игнорирует это.

[tool:pytest]
norecursedirs=lib/third

Когда я запускаю py.test, я вижу, как он получает тесты изнутри lib/third!


person sorin    schedule 20.06.2012    source источник
comment
Кажется, у меня есть py.test и pytest, оба они проходят тесты и являются разными зверями. Странно, но pytest не работает, потому что не загружает исключения из [pytest].   -  person sorin    schedule 20.06.2012
comment
pytest принадлежит logilab. Вы хотите py.test.   -  person ecatmur    schedule 20.06.2012
comment
также попробуйте сделать nosecuredirs=lib/third/*   -  person intelis    schedule 16.11.2016
comment
есть ли способ игнорировать некоторые папки в самом скрипте с помощью кода?   -  person bicepjai    schedule 07.03.2017
comment
оказался здесь, потому что мне было любопытно, почему, черт возьми, мой pytest веб-приложения в локальной разработке настолько медленный... Причина заключалась в том, что какой-то каталог загруженных ресурсов с вложенной структурой гг/дд/мм.... из-за чего это действительно отстой! к счастью, [pytest] norecursedirs = resources в pytest.ini помогает!????   -  person andilabs    schedule 22.12.2018
comment
@ecatmur Думаю, твой комментарий устарел? Я думаю, что сегодня нужно использовать pytest вместо py.test   -  person Martin Thoma    schedule 18.03.2020


Ответы (8)


py.test --ignore=somedir работал на меня

person shadfc    schedule 30.01.2017
comment
И --ignore можно указать несколько раз, чтобы игнорировать несколько каталогов. - person phoenix; 27.03.2019
comment
Как пропустить определенные тесты вместо каталога - person Rajat jain; 09.04.2019
comment
Вы можете использовать опцию -k, как показано в другом ответе ниже. См. раздел Запуск тестов по ключевым словам на docs.pytest.org. /ru/последние/. Здесь также могут быть полезны метки. Отметьте свои тесты как медленные и т. д., а затем используйте -k "not slow" - person shadfc; 06.05.2019

Если у вас есть несколько каталогов с разными родителями, вы можете указать разные параметры --ignore:

py.test --ignore=somedir --ignore=otherdir --ignore=etcdir

  • новая опция: --ignore предотвратит сбор данных по указанному пути.
    Можно указать несколько раз.
person David Batista    schedule 07.02.2019

Я разгадал загадку: если раздел pytest найден в одном из возможных файлов конфигурации (pytest.ini, tox.ini и setup.cfg), pytest не будет искать другие, поэтому убедитесь, что вы определили параметры py.test в одном файле.

Я бы предложил использовать setup.cfg.

person sorin    schedule 20.06.2012
comment
Почему setup.cfg? Текущая документация рекомендует два других - person jebob; 05.02.2020
comment
я думаю, важно отметить, что если вы хотите использовать файл .ini, вам нужно указать его с помощью pytest -c pytest.ini. по какой-то причине setup.cfg содержимое было подобрано автоматически. - person therightstuff; 03.11.2020
comment
@therightstuff У меня pytest.ini используется без таких ухищрений. - person mirek; 14.02.2021

Вы можете использовать

py.test -k 'not third'

который исключает все содержимое «третьего» каталога.

person Salvatore Avanzo    schedule 08.07.2014

norecursedirs должно работать. Проверьте, есть ли у вас файл pytest.ini или другие файлы setup.cfg. Как вы вызываете py.test?

person ecatmur    schedule 20.06.2012
comment
У меня есть setup.cfg с правильным [pytest] и norecorsedirs внутри, но он, кажется, игнорируется, и вместо этого он ищет все файлы. - person sorin; 18.04.2013

В моем случае проблема заключалась в отсутствующем подстановочном знаке. Для меня работает следующее:

[tool:pytest]
norecursedirs = subpath/*

тогда как только norecursedirs = subpath этого не сделал.

person bluenote10    schedule 09.10.2019
comment
То же самое. Хотя очень странное поведение. - person azmeuk; 30.09.2020

Если вы используете setup.cfg, вы должны использовать [tool:pytest] согласно https://doc.pytest.org/en/latest/example/pythoncollection.html

# содержимое pytest.ini
# также может быть определено в файле tox.ini или setup.cfg, хотя имя раздела
# в файлах setup.cfg должно быть "tool:pytest"

person RChat    schedule 27.02.2017

Чтобы использовать pytest.ini (что рекомендуется, если вы не используете tox, в этом случае tox.ini имеет смысл), вызовите pytest с pytest -c pytest.ini.

Чтобы мои образцы not_me_1.py и not_me_2.py не тестировались и не анализировались, мой pytest.ini выглядит следующим образом:

[pytest]
addopts = --ignore-glob=not_me_*

[pycodestyle]
ignore = not_me_* ALL

person therightstuff    schedule 03.11.2020