Lila25mila
Lila25mila29 січня 2019 р. 02:53

Як використовувати Coverage в Django

Коли ви розробляєте великий проект, можна забути деякі частини коду, які потрібно протестувати. Coverage.py – це інструмент на python, який допоможе вам у цьому.


Установка

Використовуйте pip або easy_install, як вам до вподоби

pip install coverage 
Запуск та видалення

Для запуску Django використовуйте команду:

overage run --source='.' manage.py test the-app-you-want-to-test

Ця команда заповнить ".coverage", який розташований у COVERAGE_FILE, а потім ви можете побачити результати або звіт. Якщо вам потрібно видалити отримані дані, скористайтесь командою:

coverage erase
Для одного файла

Якщо ви хочете перевірити тільки код Python, вам необхідно зробити:

coverage run your_program.py arg1 arg2 arg3

Є кілька додаткових опцій, які ви можете переглянути за посиланням .
Шаблони можна дізнатися у розділі плагінів .

Перегляд результату

Якщо ви бажаєте вивести результати в командному рядку:

coverage report

Для більш зрозумілих та зручних звітів:

coverage html

Щоб точно знати, яка частина коду покрита тестами, використовуйте наступну команду:

coverage annotate -d directory-where-to-put-annotated-files

Програма згенерує той самий файл вихідного коду з додатковим синтаксисом:

- Рядок із «>» означає, що вона була виконана.

- Рядок, що починається з «!», означає, що вона не була виконана.

- Рядок, що починається з «-» означає, що рядок було виключено зі статистики покриття.

Хороший рівень покриття

Хороше покриття зазвичай припадає на 90%. Однак, якщо результат 100%, це може бути поганим сигналом, оскільки, можливо, справа з покриттям, а не якістю тестів.

Декілька порад:

- Будьте обережні з якістю тестів.

- Не уповільнюйте швидкості свого розробника заради покриття.

- Використовуйте покриття, щоб знайти неперевірений код і вирішити, чи заслуговує він на покриття.

Виключаємо код

Іноді нам потрібно виключити певний код, який не потребує покриття. Існує кілька варіантів:

- Вказує файли для виключення та пропуску в .coveragerc.

- Написання в одному рядку блоку коментаря.

 # pragma: no cover

Наприклад, якщо ви хочете виключити згенерований код із покриття, тому що він повинен підтримуватись інструментом генерації:

def generated_code():   # pragma: no cover
   do_something()

Більше інформації на Coverage.py documentation.

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.

Вам це подобається? Поділіться в соціальних мережах!

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up
AD

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:50бали,
  • Рейтинг балів-4
m
  • molni99
  • 26 жовтня 2024 р. 01:37

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:80бали,
  • Рейтинг балів4
m
  • molni99
  • 26 жовтня 2024 р. 01:29

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:20бали,
  • Рейтинг балів-10
Останні коментарі
ИМ
Игорь Максимов22 листопада 2024 р. 11:51
Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Evgenii Legotckoi
Evgenii Legotckoi31 жовтня 2024 р. 14:37
Django - Урок 064. Як написати розширення для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZE19 жовтня 2024 р. 08:19
Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь Максимов05 жовтня 2024 р. 07:51
Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas505 липня 2024 р. 11:02
QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Тепер обговоріть на форумі
Evgenii Legotckoi
Evgenii Legotckoi24 червня 2024 р. 15:11
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
t
tonypeachey115 листопада 2024 р. 06:04
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
NSProject
NSProject04 червня 2022 р. 03:49
Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
9
9Anonim25 жовтня 2024 р. 09:10
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

Слідкуйте за нами в соціальних мережах