Написание модульных тестов для Python с помощью тестов Обозреватель в Visual Studio
Модульные тесты — это сегменты кода, которые проверяют работу других частей кода в приложении, например изолированных функций, классов и т. д. Когда приложение проходит все модульные тесты, вы можете быть уверены в правильности по крайней мере низкоуровневой функциональности программы.
В Python модульное тестирование широко используется для проверки скриптов в процессе разработки. Поддержка Python в Visual Studio включает обнаружение, выполнение и отладку модульных тестов непосредственно в контексте процесса разработки, а значит, вам не потребуется выполнять эти тесты отдельно.
Эта статья содержит краткий обзор модульного тестирования в Visual Studio для Python. Общие сведения о модульном тестировании см. в статье о модульном тестировании кода.
Необходимые компоненты
Visual Studio в Windows, установленная с поддержкой рабочих нагрузок Python. Дополнительные сведения см. в статье "Установка поддержки Python в Visual Studio".
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:
В Обозреватель решений щелкните правой кнопкой мыши имя проекта и выберите "Свойства".
В области "Свойства проекта" выберите вкладку "Тест" и выберите тип платформы test:
Для платформы unittest Visual Studio назначает корневой каталог проекта для обнаружения тестов. Значением
.
по умолчанию является, но при настройке параметров проекта можно указать другое расположение. Можно также указать одну или несколько строк для шаблона имени тестового файла, напримерtest*.py, test_*.py
.Для платформы pytest параметры тестирования, такие как расположение теста и шаблоны имени файла, задаются с помощью стандартного файла конфигурации pytest .ini. По умолчанию папка рабочей области или проекта используется для расположения. Шаблон имени файла по умолчанию включает
test_*py
и*_test.py
. Дополнительные сведения см. в справочной документации pytest.
Примечание.
При определении шаблона имени файла следует помнить, что специальные символы, такие как символ подчеркивания (
_
) не соответствуют диким карта (*
). Если вы хотите использовать специальные символы в имени файла, укажите эти символы в определении шаблона, напримерtest_*.py
.Чтобы сохранить выбор и параметры платформы, можно использовать сочетание клавиш CTRL+S.
После настройки платформы Visual Studio инициирует обнаружение тестов и открывает Обозреватель тестирования.
Настройка тестирования для Python без проекта
Visual Studio позволяет запускать и тестировать существующий код Python без проекта, открыв папку с кодом Python. В этом сценарии необходимо использовать файл Python Параметры.json для настройки тестирования.
Откройте существующий код Python с помощью параметра "Открыть локальную папку ":
При открытии папки Python Visual Studio создает несколько скрытых папок для управления параметрами, связанными с программой. Чтобы просмотреть эти папки (и другие скрытые файлы и папки, например папку .git) в Обозреватель решений, выберите параметр "Показать все файлы":
В Обозреватель решений разверните папку "Локальные Параметры" и дважды щелкните файл Python Параметры.json, чтобы открыть файл в редакторе.
Примечание.
Большинство конфигураций показывают два файла параметров: Python Параметры.json и Project Параметры.json. Для этого упражнения необходимо изменить файл Python Параметры.json.
Если вы не видите файл Python Параметры.json в папке локальных Параметры, его можно создать вручную:
Щелкните правой кнопкой мыши папку "Локальный Параметры" и выберите "Добавить>новый файл".
Назовите файл Python Параметры.json и нажмите клавишу ВВОД, чтобы сохранить изменения.
Visual Studio автоматически открывает новый файл в редакторе.
В файле 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.
Если программа Python содержит папку src отдельно от папки, содержащей тесты, укажите путь к папке src с
SearchPaths
параметром в файле Python Параметры.json:"SearchPaths": [".\\src"]
Сохраните изменения в файле Python Параметры.json.
После настройки платформы Visual Studio инициирует обнаружение тестов для указанной платформы. Вы можете получить доступ к тесту в тестовом Обозреватель.
Добавление и обнаружение тестов
По умолчанию Visual Studio определяет тесты unittest и pytest как методы, имена которых начинаются с test
.
Чтобы узнать, как Visual Studio инициирует обнаружение тестов, выполните следующие действия.
Откройте проект Python в Visual Studio.
Задайте свойства платформы тестирования для проекта, как описано в разделе "Выбор тестовой платформы для проекта Python".
В Обозреватель решений щелкните проект правой кнопкой мыши и выберите "Добавить>новый элемент".
В диалоговом окне "Добавление нового элемента" выберите тип файла модульного теста Python.
Введите имя файла, которое удовлетворяет определению шаблона, заданному для свойств проекта.
Выберите Добавить.
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, выберите параметр "Использовать устаревший отладчик" в разделе "Параметры>отладки Python>" средств.>
Чтобы начать отладку, установите в коде начальную точку останова, а затем щелкните в обозревателе тестов правой кнопкой мыши этот тест (или выделенный набор тестов) и выберите Отладить выбранные тесты. Visual Studio запускает отладчик Python, как для обычного кода приложения.
Если вы предпочитаете, можно использовать покрытие кода анализа для выбранных тестов. Дополнительные сведения см. в разделе Использование покрытия кода для определения объема протестированного кода.