#python #pytest #pylint
Вопрос:
У меня есть типичная кодовая база Python с сотнями .py
файлов в десятках каталогов и десятками /tests/
каталогов, заполненных test_whatever.py
файлами (которые я запускаю с помощью pytest
).
Но, честно говоря, у меня гораздо более низкая планка для заботы о pylint
вещах в тестовых файлах, чем в реальном коде. Как я могу игнорировать эти четыре вещи для файлов в /tests/
папках?
missing-module-docstring
missing-class-docstring
missing-function-docstring
protected-access
Единственное, что мне удалось в основном решить, — это функция docstring one, поместив это в мой pylintrc
:
no-docstring-rgx=^_|^test_
Можно ли исправить остальные? (Я не могу полностью исключить тестовые файлы из компоновки.)
Комментарии:
1. как вы управляете pylint ? вы используете токсины, например ? что я обычно делаю, так это добавляю к исполнениям pylint в tox, один для кода и один для тестов, и таким образом я могу отправлять разные аргументы между ними
2. Лично я использую предварительную фиксацию, в которой есть опция исключения, позволяющая фильтровать
test/
3. @ozs Да, pylint обычно управляется tox. Можете ли вы показать, как это работает? Я бы с удовольствием посмотрел на это!
Ответ №1:
вы можете использовать tox, который является универсальным средством управления virtualenv и тестирования командной строки. токсины помогают вам :
- проверка правильности установки пакета в разных версиях python
- выполнение тестов в каждой из сред
- выполнение функций интерфейса для серверов непрерывной интеграции
вы можете прочитать больше о токсикологии на их официальном сайте
установите tox с помощью pip install tox
добавьте файл tox.ini на корневом уровне. см. Структуру проекта на рисунке ниже
в файле tox.ini базовая конфигурация для запуска тестов и pylint будет выглядеть так:
[tox]
minversion = 2.0
envlist = py36, pylint
skipsdist = True
[testenv]
commands = {envbindir}/pytest {posargs}
deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/dev-requirements.txt
recreate = False
passenv = *
[testenv:pylint]
basepython=python3.6
deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/dev-requirements.txt
commands=pylint src
pylint --disable=missing-module-docstring,missing-class-docstring tests
как вы можете видеть, я разделил pylint на 2 команды, которые позволяют мне управлять тем, как по-разному обрабатывать мой src и тесты.
чтобы запустить tox (тесты lint), просто запустите tox
терминал из каталога tox.ini.
если вы хотите запустить только pylint, вы можете запустить tox -e pylint
Комментарии:
1. Штопать. Так что проблема несколько сложнее. (1)
/tests/
находится внутри/src/
, а во-вторых, у меня есть десятки/tests/
папок на разных уровнях глубины. хм2. вы можете создать 2 файла pylintrc (для каждой команды). в pylintrc вы можете использовать «шаблоны игнорирования» для определения файлов черного списка. запустите pylint —rcfile=путь , один для src и один для тестов