Run with coverage что это
Перейти к содержимому

Run with coverage что это

  • автор:

Running with coverage

PyCharm provides a dedicated action that allows you to perform run with code coverage measurement. The code coverage data is processed according to the option selected on the Coverage page of the Settings dialog ( Control+Alt+S ).

Run with code coverage

  1. Do one of the following:
    • Open the desired file in the editor, and choose Run with Coverage from the context menu. When running tests with coverage, note that you can run the entire test class, or each individual test method, depending on the caret location.
    • Open the desired file in the Project tool window and choose Run with Coverage from the context menu. You can also select a directory with test files and choose the corresponding command from the context menu to run several tests with coverage.
    • Select the desired run/debug configuration, and then from the main menu choose Run | Run with coverage .
    • On the main toolbar, click the More Actions | Run with Coverage . This will launch the selected run/debug configuration.
  2. If the Show options before applying coverage to the editor checkbox has been selected on the Coverage page of the Settings dialog ( Control+Alt+S ), a dialog appears where you can choose whether you want to replace the active coverage suites, add the collected data to the active suites, or not to apply coverage data. You can also opt to skip this dialog in the future. In case any other option has been selected, the respective action will be performed silently.
  3. Explore the collected coverage data in the Coverage Tool Window.

Hide coverage results

  • To hide coverage results, you can do the following:
    • Close a tab with coverage statistics in the Coverage tool window.
    • Click a coverage highlighting in a gutter and select Hide coverage .

    Last modified: 10 January 2024

    Run with coverage

    In IntelliJ IDEA, you can create multiple run/debug configurations and specify coverage options for each of them depending on your needs.

    Run configurations are currently being redesigned: some configurations are updated, and some are still in the old design. Use the procedure that corresponds to the appearance of the required configuration.

    Code Coverage tab in the Run/debug Configuration dialog

    1. Go to Run | Edit Configurations and click the necessary configuration on the left panel. If you haven’t created the required configuration yet, refer to the Create a run/debug configuration from a template procedure that will guide you through the process.
    2. Open the Code Coverage tab and select a code coverage runner from the Choose coverage runner list: IntelliJ IDEA or JaCoCo .
    3. (For the IntelliJ IDEA runner) select Branch coverage to collect information for all branches of if and switch statements. Additionally, enable the Track per test coverage option that allows tracking individual code coverage produced by each test case. Enable this option if you want to know exactly what lines of code have been covered by specific tests. This will let see which tests are the most relevant for each piece of the code.
    4. The Packages and classes to include in coverage data and Packages and classes to exclude from coverage data areas allow you to narrow down the code coverage scope. Click , then click Add Class or Add Package , and select the necessary items.
    5. To collect code coverage statistics for tests, select the Enable coverage in test folders checkbox.
    1. Go to Run | Edit Configurations and click the necessary configuration on the left panel. If you haven’t created the required configuration yet, refer to the Create a run/debug configuration from a template procedure that will guide you through the process. Code Coverage in the Run/debug Configuration dialog
    2. Click Modify options , select Coverage settings , and select the options that you want to configure:
      • Specify classes and packages : select this option to configure classes and packages for which you want to see the coverage information.
      • Exclude classes and packages : select this option to configure classes and packages that you want to exclude from coverage.
      • Specify alternative coverage runner : select this option to set a coverage runner: the IntelliJ IDEA runner or JaCoCo.
      • Use tracing : (only for the IntelliJ IDEA runner) tracing enables the accurate collection of the branch coverage with the ability to track tests, view coverage statistics, and get additional information on each covered line.
      • Collect coverage in test folders : collect code coverage statistics for tests.

      Code Coverage in the Run/debug Configuration dialog

    Run a configuration with coverage

    Code coverage is supported only for the classes and sources that belong to your current project.

    Running a test with coverage

    1. Make sure that you have created the necessary run/debug configuration. You can also use a temporary run configuration that you can later modify, save, and rerun.
    2. Select the configuration from the list on the toolbar and click or select Run | Run . with Coverage from the main menu.
    3. (If the Show options before applying coverage to the editor option is enabled) The IDE prompts you to select whether you want to replace the active coverage suites, add the collected data to the active suites, or skip applying coverage data. Select whether you want to append the results of multiple runs and click OK .

    Как использовать 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()

    Рекомендуем хостинг TIMEWEB

    Рекомендуем хостинг TIMEWEB

    Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

    По статье задано0 вопрос(ов)
    Подписка на обсуждение 2
    Подписка на раздел 178

    Вам это нравится? Поделитесь в социальных сетях!

    Покрытие кода тестами — Python: Автоматическое тестирование

    С ростом проекта становится сложно определить, какой код уже протестирован, а какой — еще нет. При этом подобная потребность возникает регулярно. Обычно это происходит тогда, когда не все члены команды ответственно подходят к написанию тестов. В таком случае может страдать качество проекта.

    Но есть решение — протестированность кода можно измерить. В этом уроке мы познакомимся с метрикой, которая помогает подсчитать количество тестов и качество тестирования.

    Как работает покрытие тестами

    В тестировании часто используют метрику code coverage — это покрытие кода тестами. Покрытие анализируется тестовыми фреймворками, которые считают отношения строчек, задействованных в тестах, ко всем строчкам исходного кода.

    Например, если в коде есть условная конструкция, не проверенная тестами, то все строки кода в этой конструкции будут не покрытыми.

    В Pytest покрытие измеряется крайне просто. Достаточно установить одну зависимость и запустить тесты с правильным флагом:

    --cov # Примерный вывод tests/test_example.py .. [ 66%] tests/test_hexlet_pytest.py . [100%] Name Stmts Miss Cover ----------------------------------------------- hexlet_pytest/__init__.py 1 0 100% hexlet_pytest/example.py 4 1 75% ----------------------------------------------- TOTAL 5 1 80% 

    После всех тестов Pytest выводит сводную таблицу по каждому файлу. В ней показан процент покрытия кода тестами.

    В примере выше видно, что в файле _init_.py покрыто 100% кода, а вот в файле example.py — только 75%. При этом общее покрытие кода 80%.

    Обратите внимание, что покрытие сильно зависит от того, какие тесты выполнились. Если часть тестов упало с ошибкой, то Pytest покажет намного меньшее покрытие — тесты просто не доберутся до всего кода. Поэтому покрытие измеряют только тогда, когда все тесты зеленые.

    Эта статистика помогает найти места, где тестов мало. Дальше по ситуации их можно добавлять. Если в проекте тестов не было вообще, то эта статистика начинает быстро расти. А вот дальше, ближе к 90 процентам, придется бороться за каждую строчку кода.

    Каким должно быть покрытие

    Само по себе покрытие не гарантирует, что код работает правильно во всех ситуациях. Логические ошибки в коде невозможно отследить только покрытием. Для этого нужны тесты на одну и ту же функциональность, но с разным набором данных.

    Открыть доступ

    Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

    • 130 курсов, 2000+ часов теории
    • 1000 практических заданий в браузере
    • 360 000 студентов

    Наши выпускники работают в компаниях:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *