Как настроить средство проверки покрытия PyCharm для распознавания.coveragerc?
У меня есть .coveragerc
файл в корне моего проекта. Он сообщает cover.py об отсутствии каталогов миграции моего проекта:
[run]
omit = *migrations*
Когда я бегу coverage.py
в командной строке указывается конфиг, который я вставил в.coveragerc.
Однако PyCharm его не распознает. Есть ли настройка, которую мне не хватает?
Если окажется, что PyCharm не может распознать .coveragerc
Я был бы счастлив даже просто опустить эти каталоги.
4 ответа
Для этого есть запрос функции на https://youtrack.jetbrains.com/issue/PY-16945
Вы можете заставить PyCharm использовать .coveragerc
поместив его в рабочий каталог, из которого вы запускаете свои тесты.
Запрос функции с https://youtrack.jetbrains.com/issue/PY-16945 был реализован и работает в версии 2018.1.
Существует другой способ заставить PyCharm игнорировать определенные файлы и папки:
в Settings
выбирать Project: ...
- Project Structure
, Здесь вы можете пометить папки как Excluded
или исключить файлы специально.
Отчеты PyCharm о покрытии кода также игнорируют все эти исключенные файлы.
Я оказался в ситуации, когда мне это очень нужно. Моя трасса работала правильно, как и комбинезон, но я не смог заставить работать вещи в PyCharm.
Это немного странно, но, надеюсь, это поможет людям:
В моем корневом каталоге проекта я получил.coveragerc
[run]
omit = ./venv
concurrency = multiprocessing
parallel = True
source = HookTest
data_file = .cache/.coverage
И я "взломал" небольшой run_coverage.py из PyCharm: (pycharm-2016.3.2/helpers/cover_runner/run_coverage.py)
Начинается с
argv = []
Заменить все на:
argv = []
for arg in sys.argv:
if arg.startswith('-m') and arg[2:]:
argv.append(arg[2:])
else:
argv.append(arg)
cwd = os.getcwd()
rcfile = cwd + "/.coveragerc"
if os.path.exists(rcfile):
print("Loading rcfile")
i = argv.index("run")+1
argv = argv[:i] + ["--rcfile={}".format(rcfile)] + argv[i:]
sys.argv = argv
try:
main()
finally:
if run_cov:
os.chdir(cwd)
if os.getenv('COVERAGE_COMBINE'):
main(["combine"])
main(["xml", "-o", coverage_file + ".xml", "--ignore-errors"])
Чтобы сделать это с помощью python setup.py test, я создал скрипт в PyCharm, который использует указанный setup.py, имел параметр test has параметр и COVERAGE_COMBINE в качестве глобального env. Возможно, это не лучшее решение за все время, но, по крайней мере, оно позволяет мне больше не использовать вывод HTML при локальной работе:)
Это не работает в последней версии Pycharm 2018.3.4. Единственный способ заставить его работать - это проверитьrun_coverage.py
как @PonteIneptique
Вот единственная модификация, которую мне пришлось сделать:
run_xml = os.getenv('PYCHARM_RUN_COVERAGE_XML')
argv = ["xml", "-o", coverage_file + ".xml", "--ignore-errors"]
rcfile = cwd + "/.coveragerc"
if os.path.exists(rcfile):
print("Loading rcfile\n")
argv += ["--rcfile", rcfile]
if run_xml:
os.chdir(cwd)
main(argv)
else:
try:
main()
finally:
if run_cov:
os.chdir(cwd)
main(argv)
Не забудьте также указать рабочий каталог файла.coveragerc в вашей конфигурации. Программисты Pycharm должны обновить свой код для поддержки этого файла.coveragerc из графического интерфейса.