скриптов, которые запущены через subprocess? Я пользуюсь официальной из доки coverage, и че-то оно мне не очень помогает.
Поправьте, если я не прав, порядок действий:
1. Создать в корневой директории проекта файлик .coveragerc.
2. Добавить в этот файлик parallel=True.
3. Запустить тесты командой coverage run -m pytest --cache-clear.
4. Создать в директории f'{sys.prefix}/lib/python3.9/site-packages/' (это если что временный путь до папки конкретного интерпретатора, он определяется в рантайме основного процесса) файлик sitecustomize.py и добавить туда строчку import coverage; coverage.process_startup().
5. Из основного процесса с тестами запускать subprocess'ы с передачей им всех переменных окружения текущего процесса + новой переменной COVERAGE_PROCESS_START, куда записывается строка .coveragerc.
6. После выполнения команды coverage запустить команду coverage combine --append, которая объединит результирующие файлы из разных процессов в один.
7. Теперь можно посмотреть результаты, например командой coverage report -m.
Вот что-то в этом списке действий у меня не работает и я не могу разобраться, что именно. По итогу я только вижу, что процент покрытия не изменяется, хотя должен довольно сильно за счет сабпроцессов.
ЧЯДНТ?
А почему от распараллеливания того же набора тестов у тебя покрытие должно стать выше?
У меня есть библиотека, которая работает в том числе как команда CLI. Я запускаю ее в CLI-режиме через subprocess и таким образом хочу получить покрытие мейн-функции. Однако покрытие из нее не записывается.
а ты не можешь просо дернуть main функцию в тесте напрмую?
В принципе могу, но там довольно много сложной логики, связанной с CLI, и мне надо бы ее тестировать именно в CLI-режиме.
Там есть например вещи, которые должны отработать строго один раз на процесс
Да, но в этом вся фича либы
А почему процент покрытия должен изменяться из-за сабпроцессов?
Потому что я запускаю через сабпроцессы собственный код
Ты хочешь сказать, что запускаемый код не засчитывается в покрытие?
Попробуй поймать файл, куда пишет саб процесс и посмотри, что он туда написал
Обсуждают сегодня