Написание модульных тестов для Python с помощью тестов Обозреватель в Visual Studio

Модульные тесты — это сегменты кода, которые проверяют работу других частей кода в приложении, например изолированных функций, классов и т. д. Когда приложение проходит все модульные тесты, вы можете быть уверены в правильности по крайней мере низкоуровневой функциональности программы.

В Python модульное тестирование широко используется для проверки скриптов в процессе разработки. Поддержка Python в Visual Studio включает обнаружение, выполнение и отладку модульных тестов непосредственно в контексте процесса разработки, а значит, вам не потребуется выполнять эти тесты отдельно.

Эта статья содержит краткий обзор модульного тестирования в Visual Studio для Python. Общие сведения о модульном тестировании см. в статье о модульном тестировании кода.

Необходимые компоненты

Visual Studio для Mac не поддерживается. Дополнительные сведения см. в статье "Что происходит с Visual Studio для Mac?" Visual Studio Code в Windows, Mac и Linux хорошо работает с Python с помощью доступных расширений.

Выбор тестовой платформы для проекта Python

Visual Studio поддерживает две платформы тестирования для Python, unittest и pytest (доступны в Visual Studio 2019 версии 16.3 и более поздних версиях). По умолчанию при создании проекта Python платформа не выбрана.

Выполните следующие действия, чтобы выбрать тестовую платформу для проекта Python:

  1. В Обозреватель решений щелкните правой кнопкой мыши имя проекта и выберите "Свойства".

  2. В области "Свойства проекта" выберите вкладку "Тест" и выберите тип платформы test:

    • Для платформы unittest Visual Studio назначает корневой каталог проекта для обнаружения тестов. Значением .по умолчанию является, но при настройке параметров проекта можно указать другое расположение. Можно также указать одну или несколько строк для шаблона имени тестового файла, напримерtest*.py, test_*.py.

    • Для платформы pytest параметры тестирования, такие как расположение теста и шаблоны имени файла, задаются с помощью стандартного файла конфигурации pytest.ini. По умолчанию папка рабочей области или проекта используется для расположения. Шаблон имени файла по умолчанию включает test_*py и *_test.py. Дополнительные сведения см. в справочной документации pytest.

    Примечание.

    При определении шаблона имени файла следует помнить, что специальные символы, такие как символ подчеркивания (_) не соответствуют диким карта (*). Если вы хотите использовать специальные символы в имени файла, укажите эти символы в определении шаблона, например test_*.py.

  3. Чтобы сохранить выбор и параметры платформы, можно использовать сочетание клавиш CTRL+S.

После настройки платформы Visual Studio инициирует обнаружение тестов и открывает Обозреватель тестирования.

Настройка тестирования для Python без проекта

Visual Studio позволяет запускать и тестировать существующий код Python без проекта, открыв папку с кодом Python. В этом сценарии необходимо использовать файл Python Параметры.json для настройки тестирования.

  1. Откройте существующий код Python с помощью параметра "Открыть локальную папку ":

    Снимок экрана: выбор параметра

    Снимок экрана: выбор параметра

  2. При открытии папки Python Visual Studio создает несколько скрытых папок для управления параметрами, связанными с программой. Чтобы просмотреть эти папки (и другие скрытые файлы и папки, например папку .git) в Обозреватель решений, выберите параметр "Показать все файлы":

    Снимок экрана: просмотр скрытых папок и файлов в Обозреватель решений в Visual Studio 2022.

    Снимок экрана: просмотр скрытых папок и файлов в Обозреватель решений в Visual Studio.

  3. В Обозреватель решений разверните папку "Локальные Параметры" и дважды щелкните файл Python Параметры.json, чтобы открыть файл в редакторе.

    Примечание.

    Большинство конфигураций показывают два файла параметров: Python Параметры.json и Project Параметры.json. Для этого упражнения необходимо изменить файл Python Параметры.json.

    Если вы не видите файл Python Параметры.json в папке локальных Параметры, его можно создать вручную:

    1. Щелкните правой кнопкой мыши папку "Локальный Параметры" и выберите "Добавить>новый файл".

    2. Назовите файл Python Параметры.json и нажмите клавишу ВВОД, чтобы сохранить изменения.

    Visual Studio автоматически открывает новый файл в редакторе.

  4. В файле Python Параметры.json добавьте следующий код для определенияTestFramework. Задайте значение платформы pytest или unittest в зависимости от требуемой платформы тестирования:

    {
      "TestFramework": "unittest",
      "UnitTestRootDirectory": "testing",
      "UnitTestPattern": "test_*.py"
    }
    
    • Если вы не определяете определенные значения для UnitTestRootDirectory и UnitTestPattern параметров в файле Python Параметры.json, Visual Studio автоматически добавляет эти поля со значениями . по умолчанию и test*.pyсоответственно.

    • Для платформы pytest параметры конфигурации всегда указываются в файле конфигурации pytest.ini вместо параметров Visual Studio.

  5. Если программа Python содержит папку src отдельно от папки, содержащей тесты, укажите путь к папке src с SearchPaths параметром в файле Python Параметры.json:

      "SearchPaths": [".\\src"]
    
  6. Сохраните изменения в файле Python Параметры.json.

После настройки платформы Visual Studio инициирует обнаружение тестов для указанной платформы. Вы можете получить доступ к тесту в тестовом Обозреватель.

Добавление и обнаружение тестов

По умолчанию Visual Studio определяет тесты unittest и pytest как методы, имена которых начинаются с test.

Чтобы узнать, как Visual Studio инициирует обнаружение тестов, выполните следующие действия.

  1. Откройте проект Python в Visual Studio.

  2. Задайте свойства платформы тестирования для проекта, как описано в разделе "Выбор тестовой платформы для проекта Python".

  3. В Обозреватель решений щелкните проект правой кнопкой мыши и выберите "Добавить>новый элемент".

    1. В диалоговом окне "Добавление нового элемента" выберите тип файла модульного теста Python.

    2. Введите имя файла, которое удовлетворяет определению шаблона, заданному для свойств проекта.

    3. Выберите Добавить.

  4. Visual Studio создает тестовый файл с кодом по умолчанию:

    import unittest
    
    class Test_test1(unittest.TestCase):
        def test_A(self):
            self.fail("Not implemented")
    
    if __name__ == '__main__':
        unittest.main()
    

    Этот код импортирует стандартный unittest модуль и извлекает тестовый класс из unittest.TestCase метода. При непосредственном запуске скрипта этот код также вызывает функцию unittest.main() .

При добавлении новых тестовых файлов Visual Studio делает их доступными в тестовом Обозреватель.

Просмотр тестов с помощью тестов Обозреватель

После настройки платформы тестирования и тестовых файлов Visual Studio ищет тесты и отображает их в Обозреватель тестирования.

Ниже приведены некоторые способы работы с тестовой Обозреватель.

  • Откройте окно "Тестовый Обозреватель", выбрав "Тестовый>тест" Обозреватель.

  • Когда откроется окно "Тест Обозреватель", используйте сочетание клавиш CTRL+R, А для активации обнаружения тестов.

  • Дважды щелкните тест в тестовом Обозреватель, чтобы открыть соответствующий исходный файл в редакторе:

    Снимок экрана: представление по умолчанию для теста в тестовом Обозреватель в Visual Studio 2022.

    Снимок экрана: представление по умолчанию для теста в тестовом Обозреватель.

  • Упорядочение представления тестов с помощью параметра Group By на панели инструментов:

    Снимок экрана, на котором показано, как упорядочить представление тестов в тестовом Обозреватель с параметром Group By в Visual Studio 2022.

    Снимок экрана, на котором показано, как упорядочить представление тестов в тестовом Обозреватель с помощью параметра Group By.

  • Отфильтруйте тесты по имени, введя текст в поле поиска :

    Снимок экрана: фильтрация представления тестов в тестовом Обозреватель с помощью поля поиска.

    Снимок экрана: фильтрация представления тестов в тестовом Обозреватель с помощью поля поиска.

  • Выполните тесты и просмотрите состояние тестового запуска, как описано в следующем разделе.

Дополнительные сведения о модуле unittest и написании тестов см. в документации по Python.

Выполнение тестов с помощью обозревателя тестов

В тестовой Обозреватель можно выполнять тесты несколькими способами:

  • Выберите "Запустить все" (тесты в представлении), чтобы выполнить все тесты, отображаемые в текущем представлении на основе параметров фильтра.
  • Используйте команды в меню "Запуск" для выполнения неудачных, переданных или не выполняйте тесты в качестве группы.
  • Выберите один или несколько тестов, а затем щелкните правой кнопкой мыши и выберите параметр "Выполнить выбранные тесты ".

Visual Studio запускает тесты в фоновом режиме. Проверка Обозреватель обновляет состояние каждого теста по завершении:

  • При прохождении тестов отображается зеленый галок и время завершения тестового выполнения:

    Снимок экрана: состояние переданного теста в тестовом Обозреватель в Visual Studio 2022.

    Снимок экрана: состояние переданного теста в тестовом Обозреватель.

  • Неудачные тесты показывают красный X со ссылкой на выходные данные консоли и unittest выходные данные из тестового запуска:

    Снимок экрана: сведения о состоянии и причине неудачного теста в тестовой Обозреватель в Visual Studio 2022.

    Снимок экрана: состояние неудачного теста в тестовом Обозреватель.

    Снимок экрана: причина неудачного теста в тестовом Обозреватель.

Проверка тестов с помощью отладчика

Модульные тесты — это фрагменты кода, которые подвергаются ошибкам, как и любой другой код, и иногда их необходимо запускать в отладчике. В отладчике Visual Studio можно задать точки останова, проверить переменные и выполнить пошаговое выполнение кода. Также Visual Studio предоставляет средства диагностики для модульных тестов.

Просмотрите следующие моменты о проверка тестирования с помощью отладчика Visual Studio:

  • По умолчанию тестовая отладка использует отладчик debugpy для Visual Studio 2019 версии 16.5 и более поздних версий. Некоторые более ранние версии Visual Studio используют отладчик ptvsd 4 . Если вы используете более раннюю версию Visual Studio и предпочитаете отладчик ptvsd 3, выберите параметр "Использовать устаревший отладчик" в разделе "Параметры>отладки Python>" средств.>

  • Чтобы начать отладку, установите в коде начальную точку останова, а затем щелкните в обозревателе тестов правой кнопкой мыши этот тест (или выделенный набор тестов) и выберите Отладить выбранные тесты. Visual Studio запускает отладчик Python, как для обычного кода приложения.

    Снимок экрана: отладка модульного теста с помощью отладчика Visual Studio 2022.

    Снимок экрана: отладка модульного теста с помощью отладчика Visual Studio.

  • Если вы предпочитаете, можно использовать покрытие кода анализа для выбранных тестов. Дополнительные сведения см. в разделе Использование покрытия кода для определения объема протестированного кода.