#docker #pyspark #test-coverage
Вопрос:
У меня есть проект pyspark с несколькими файлами модульных тестов
test case files
test_testOne.py
test_testcaseTwo.py
Эти тестовые классы выполняются внутри контейнера docker. Во время выполнения тестов внутри контейнера я также хочу получать отчеты о тестовом покрытии. Поэтому я добавил следующую строку в свой requirements.txt файл
coverage==6.0.2
И внутри контейнера docker я запускаю следующую команду
python -m coverage discover -s path/to/test/files
Я получаю следующий вывод
/opt/conda/bin/python: No module named coverage
Кто-нибудь может помочь мне успешно выполнить мои тесты с тестовым покрытием. Пожалуйста, обратите внимание, что все тестовые примеры успешно выполняются внутри контейнера с помощью следующей команды. Но он не генерирует тестовое покрытие
python -m unittest discover -s path/to/test/files
Ответ №1:
Если вы используете coverage
команду:
python -m unittest discover -s path/to/test/files
Становится:
coverage run -m unittest discover -s path/to/test/files
Как указано в документации: быстрый запуск
Поскольку вы используете docker, хорошим вариантом будет создать том внутри контейнера docker, а по завершении тестов coverage
сгенерировать отчет и сохранить его на вашем хост-компьютере. Таким образом, вы можете автоматизировать весь процесс и сохранять отчеты.
- Создайте том с помощью
-v
флага при запуске контейнера docker (дополнительная информация: Использование томов) - После тестов запустите
coverage html -d /path/to/your/volume/inside/docker
(посмотрите в документации для получения дополнительной опции: coverage html)