Бөлісу құралы:


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

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

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

В этой статье представлен краткий обзор возможностей модульного тестирования в Visual Studio с помощью Python. Дополнительные сведения об модульном тестировании см. в разделе Модульный тест кода.

Предпосылки

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. В этом сценарии необходимо использовать файлPythonSettings.json для настройки тестирования.

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

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

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

    Замечание

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

    Если файл PythonSettings.json не отображается в папке "Локальные параметры ", его можно создать вручную:

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

    2. Назовите файл PythonSettings.json, затем нажмите Enter, чтобы сохранить изменения.

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

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

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

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

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

      "SearchPaths": [".\\src"]
    
  6. Сохраните изменения в файле PythonSettings.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, А для активации тестового обнаружения.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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