Проверка покрытия кода с pytest-cov на gitlab CI, краткая домашка для самообразования

pytest
pytest-cov
gitlab-ci
Теги: #<Tag:0x00007fedc75fa9f8> #<Tag:0x00007fedc75fa8b8> #<Tag:0x00007fedc75fa6d8>

(Artur Korobeynyk) #1

Решил себя поучить развертке тестирования покрытия кода на базе gitlab CI и pytest и pytest-cov (никогда этого не делал, а оно есть, так почему бы не посмотреть как оно работает)
Краткий пример результата получасового самообучения здесь:

Шаги:

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

Итог: Основная работа - это конфигурационный файл. Сложного ничего нету, хотя пока в инете не так много описания на то как это сделать, что странно. Теперь при каждом пуше и мерже проэкт будет сам собираться на гитлабе, тестироваться и создавать отчет о покрытии, который в итоге будет задеплоен на веб сайт.

Можете самостоятельно проделать такую же домашнюю работу и поучиться для себя.


(Sergey Pirogov) #2

вообще codecov предоставляет свой сервис в который можно грузить отчеты


(Artur Korobeynyk) #3

Да, но это уже не важно где хранить отчёт. Главное ведь его получить и прощупать.


(Sergey Pirogov) #4

Ну так ты идешь по ссылке и получаешь https://codecov.io/gh/yashaka/selene


(Sergei Chipiga) #5

Прикольный подход - сразу вставлять репорт с результатами тестов в документацию проекта :thumbsup: