Как настроить средство проверки покрытия 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 из графического интерфейса.

Другие вопросы по тегам