Як сказати py.test пропускати певні каталоги?


91

Я намагався використовувати norecursedirsопцію всередині setup.cfg, щоб сказати py.test не збирати тести з певних каталогів, але, схоже, він ігнорує це.

[tool:pytest]
norecursedirs=lib/third

Коли я запускаю, py.testя бачу, як він отримує тести зсередини lib/third!


Здається, у мене py.testі в pytestобох вони пройшли тести та були різними звірами. Дивно, але pytestне вдається, оскільки не завантажує виключення з [pytest].
сорін

1
pytestвід logilab. Ви хочете py.test.
ecatmur

3
спробуйте також зробитиnosecuredirs=lib/third/*
intelis

чи є спосіб ігнорувати деякі папки в самому сценарії за допомогою коду?
bicepjai

2
опинився тут, тому що мені було цікаво, чому, на біса, мій пітест веб-програми в локальній розробці є надзвичайно повільним ... Причиною було те, що якийсь завантажений каталог ресурсів із вкладеною структурою yy / dd / mm .... внаслідок чого він справді відстій! на щастя [pytest] norecursedirs = resourcesin pytest.iniробить трюк! 💪
andilabs

Відповіді:


85

py.test --ignore=somedir працював у мене


5
І --ignoreможна вказати кілька разів, щоб ігнорувати кілька каталогів
Фенікс

Як пропустити певні тести замість каталогу
Раджат Джейн,

Ви можете використовувати цю -kопцію, як показує інша відповідь нижче. Див. "Запуск тестів за виразами ключових слів" на docs.pytest.org/en/latest/… . Позначки можуть бути корисними і тут. Позначте свої тести як "повільні" тощо, а потім використовуйте-k "not slow"
shadfc

Це також можна використовувати--ignore-glob для ігнорування шляхів тестових файлів на основі підстановок у стилі оболонки Unix. Наприклад --ignore-glob=**/sandbox/*, ігноруватиме всі файли в будь-якій sandboxпапці.
січень М.,

28

Якщо у вас є кілька каталогів з різними батьками, ви можете вказати різні --ignoreпараметри:

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

  • нова опція: --ignore запобіжить збору вказаного шляху.
    Можна вказати кілька разів.

23

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

Я б запропонував використовувати setup.cfg.


8
Чому setup.cfg? Поточна документація рекомендує інших двох
jebob

Я думаю, важливо згадати, що якщо ви хочете використовувати .iniфайл, вам потрібно вказати його pytest -c pytest.ini. з якихось причин setup.cfgвміст було підібрано автоматично.
therightstuff


11

norecursedirsповинні працювати. Перевірте, чи є у вас файл pytest.ini чи інші файли setup.cfg. Як ви посилаєтесь py.test?


1
У мене все-таки є setup.cfgналежні [pytest]та norecorsedirs всередині, але, схоже, ігноруються, і замість цього він буде шукати всі файли.
сорін

8

У моєму випадку проблема полягала в відсутності символу підстановки. Для мене працює наступне:

[tool:pytest]
norecursedirs = subpath/*

тоді як просто norecursedirs = subpathні.


Те ж саме. Дуже дивна поведінка.
azmeuk

3

Якщо ви використовуєте setup.cfg, вам доведеться використовувати [tool:pytest]відповідно до http://doc.pytest.org/en/latest/example/pythoncollection.html

# вміст pytest.ini
# також можна визначити у файлі tox.ini або setup.cfg, хоча
назва розділу # у файлах setup.cfg має бути "інструментом: pytest"


0

Щоб скористатися 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.