Решил себя поучить развертке тестирования покрытия кода на базе gitlab CI и pytest и pytest-cov (никогда этого не делал, а оно есть, так почему бы не посмотреть как оно работает)
Краткий пример результата получасового самообучения здесь:
https://gitlab.com/arturkor/Codecov-learning
Шаги:
- Делаем проект на gitlab.
- Получаем локальную копию гитом у себя на машине (
git clone
). - Ставим себе питон, модули
pytest
,pytest-cov
- Пишем основной код, который будем тестировать. На репозиторие (далее: репе) это файл main.py. Точку входа в программу (функцию мейн) не тестируем.
- Пишем тесты на основной код под pytest фрейм. На репе это test_main.py
- В репе в тестах один тест закоменчен чтобы не было 100% покрытия.
- Создаем кофигурационный файл для CI: в репе это .gitlab-ci.yml
- Пишем в конфигурацию CI файла стейджи (тестинг, который будет тестировать и писать отчет, билд - который просто запустит основной код, можно и без этого стейджа, и деплой, в который я засунул публикацию отчета на сайт проекта). А также в пререквизитах конфиг ставит на докер необходимое по (питон) и модули питона для каждого стейджа.
`
before_script:- apt-get update -qy && apt-get install -y python python-pip
- pip install pytest
- pip install pytest-cov
`
- В деплое копируем репорт в папку с публичным доступом, чтобы можно было на сайте посмотреть отчет: http://arturkor.gitlab.io/Codecov-learning/ о том какие функции не покрыты.
Итог: Основная работа - это конфигурационный файл. Сложного ничего нету, хотя пока в инете не так много описания на то как это сделать, что странно. Теперь при каждом пуше и мерже проэкт будет сам собираться на гитлабе, тестироваться и создавать отчет о покрытии, который в итоге будет задеплоен на веб сайт.
Можете самостоятельно проделать такую же домашнюю работу и поучиться для себя.