Test python on windows

Set up unit testing for Python code

Applies to: yesVisual Studio noVisual Studio for Mac noVisual Studio Code

Unit tests are pieces of code that test other code units in an application, typically isolated functions, classes, and so on. When an application passes all its unit tests, you can at least trust that its low-level functionality is correct.

Python uses unit tests extensively to validate scenarios while designing a program. Python support in Visual Studio includes discovering, executing, and debugging unit tests within the context of your development process, without needing to run tests separately.

This article provides a brief outline of unit testing capabilities in Visual Studio with Python. For more on unit testing in general, see Unit test your code.

Select the test framework for a Python project

Visual Studio supports two testing frameworks for Python, unittest and pytest (available in Visual Studio 2019 starting with version 16.3). By default, no framework is selected when you create a Python project. To specify a framework, right-click on the project name in Solution Explorer and select the Properties option. This opens the project designer, which allows you to configure tests through the Test tab. From this tab, you can select the test framework that you want to use for your project.

  • For the unittest framework, the project’s root directory is used for test discovery. This location, as well as the text pattern for identifying tests, can be modified on the Test tab to user specified values.
  • For the pytest framework, testing options such as test location and filename patterns are specified using the standard pytest .ini configuration file. See the pytest reference documentation for more details.
Читайте также:  Технологии web программирования на java

Once you’ve saved your framework selection and settings, test discovery is initiated in the Test Explorer. If the Test Explorer window is not already open, navigate to the toolbar and select Test > Test Explorer.

Configure testing for Python without a project

Visual Studio allows you to run and test existing Python code without a project, by opening a folder with Python code. Under these circumstances, you’ll need to use a PythonSettings.json file to configure testing.

  1. Open your existing Python code using the Open a Local Folder option. The Visual Studio startup screen
  2. Within the Solution Explorer window, click the Show All Files icon to show all files in the current folder. Show all files button
  3. Navigate to the PythonSettings.json file within the Local Settings folder. If you don’t see this file in the Local Settings folder, create it manually.
  4. Add the field TestFramework to the settings file and set it to pytest or unittest depending on the testing framework you want to use.

Note For the unittest framework, if the fields UnitTestRootDirectory and UnitTestPattern are not specified in the PythonSettings.json file, they are added and assigned default values of «.» and «test*.py» respectively.

Note If the Test Explorer window is already open CTRL + R,A also triggers discovery.

Discover and view tests

By default, Visual Studio identifies unittest and pytest tests as methods whose names start with test . To see test discovery, do the following:

  1. Open a Python project.
  2. Once the project is loaded in Visual Studio, right-click your project in Solution Explorer and select the unittest or pytest framework from the Properties Test tab.

Note If you use the pytest framework, you can specify test location and filename patterns using the standard pytest .ini configuration file. By default, the workspace/project folder is used, with a pattern of test_*py and *_test.py . See the pytest reference documentation for more details.

import unittest class Test_test1(unittest.TestCase): def test_A(self): self.fail("Not implemented") if __name__ == '__main__': unittest.main() 
  • Save the file if necessary, then open Test Explorer with the Test >Test Explorer menu command.
  • Test Explorer searches your project for tests and displays them as shown below. Double-clicking a test opens its source file. Test Explorer showing default test_A
  • As you add more tests to your project, you can organize the view in Test Explorer using the Group By menu on the toolbar: Tests Explorer Group By toolbar menu
  • You can also enter text in the Search field to filter tests by name.
  • For more information on the unittest module and writing tests, see the Python 3.10 documentation.

    Run tests

    In Test Explorer you can run tests in a variety of ways:

    • Run All clearly runs all shown tests (subject to filters).
    • The Run menu gives you commands to run failed, passed, or not run tests as a group.
    • You can select one or more tests, right-click, and select Run Selected Tests.

    Tests run in the background and Test Explorer updates each test’s status as it completes:

    • Passing tests show a green tick and the time taken to run the test: test_A passed status
    • Failed tests show a red cross with an Output link that shows console output and unittest output from the test run: test_A failed statustest_A failed with reason

    Debug tests

    Because unit tests are pieces of code, they are subject to bugs just like any other code and occasionally need to be run in a debugger. In the debugger you can set breakpoints, examine variables, and step through code. Visual Studio also provides diagnostic tools for unit tests.

    By default, test debugging uses the ptvsd 4 debugger for Visual Studio 2017 (versions 15.8 and later) and debugpy for Visual Studio 2019 (versions 16.5 and later). If you would like to instead use ptvsd 3, you can select the Use Legacy Debugger option on Tools > Options > Python > Debugging.

    To start debugging, set an initial breakpoint in your code, then right-click the test (or a selection) in Test Explorer and select Debug Selected Tests. Visual Studio starts the Python debugger as it would for application code.

    Debugging a test

    You can also use the Analyze Code Coverage for Selected Tests. For more information, see Use code coverage to determine how much code is tested.

    Источник

    Настройка модульного тестирования для кода Python

    Область применения:yesVisual StudionoVisual Studio для Mac noVisual Studio Code

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

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

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

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

    Visual Studio поддерживает две платформы тестирования для Python — unittest и pytest (доступна в Visual Studio 2019, начиная с версии 16.3). По умолчанию при создании проекта Python платформа не выбрана. Чтобы указать платформу, щелкните правой кнопкой мыши имя проекта в обозреватель решений и выберите параметр Свойства. Открывается конструктор проектов, позволяющий настраивать тесты с помощью вкладки Тест. На этой вкладке можно выбрать платформу тестирования, используемую для вашего проекта.

    • Для платформы unittest корневой каталог проекта используется для обнаружения тестов. На вкладке Тест это расположение, а также текстовый шаблон для идентификации тестов можно изменить на значения, заданные пользователем.
    • Для платформы pytest параметры тестирования, такие как расположение тестов и шаблоны имен файлов, указываются с помощью стандартного INI-файла конфигурации pytest. Дополнительные сведения см. в справочной документации для pytest.

    После сохранения выбранных параметров и платформы в обозревателе тестов инициируется обнаружение тестов. Если окно обозревателя тестов еще не открыто, перейдите на панель инструментов и выберите Тест>Обозреватель тестов.

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

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

    1. Откройте существующий код Python с помощью параметра Открыть локальную папку. Экран запуска Visual Studio
    2. В окне обозревателя решений щелкните значок Показать все файлы, чтобы отобразить все файлы в текущей папке. Кнопка
    3. Перейдите к файлу PythonSettings.json в папке Локальные параметры. Если этот файл отсутствует в папке Локальные параметры, создайте его вручную.
    4. Добавьте поле TestFramework в файл параметров и задайте для него значение pytest или unittest в зависимости от требуемой платформы тестирования.

    Примечание Если для платформы unittest в файле PythonSettings.json не указаны поля UnitTestRootDirectory and UnitTestPattern, они добавляются и получают значения по умолчанию «.» и «test*.py», соответственно.

    Примечание Если окно обозревателя тестов уже открыто нажатие клавиш CTRL + R,A также активирует обнаружение.

    Обнаружение и просмотр тестов

    По умолчанию Visual Studio определяет тесты unittest и pytest как методы, имена которых начинаются с test . Чтобы просмотреть обнаружение тестов, сделайте следующее:

    1. Откройте проект Python.
    2. После загрузки проекта в Visual Studio щелкните проект правой кнопкой мыши в обозревателе решений и выберите платформу unittest или pytest на вкладке Тест в области свойств.

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

    import unittest class Test_test1(unittest.TestCase): def test_A(self): self.fail("Not implemented") if __name__ == '__main__': unittest.main() 
  • Если нужно, сохраните этот файл, а затем откройте обозреватель тестов, последовательно выбрав команды Тест>Обозреватель тестов.
  • Обозреватель тестов ищет тесты в проекте и отображает результаты, как показано ниже. Дважды щелкните тест, чтобы открыть его исходный файл. Обозреватель тестов со стандартным тестом test_A
  • Когда тестов в проекте будет больше, их можно упорядочить в обозревателе тестов, используя команду Группировать на панели инструментов: Группировка на панели инструментов в меню обозревателя тестов
  • Также вы можете ввести текст в поле Поиск, чтобы отфильтровать тесты по именам.
  • Дополнительные сведения о модуле unittest и создании тестов можно получить в документации по Python 3.10.

    Выполнить тесты

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

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

    Тесты выполняются в фоновом режиме, а обозреватель тестов обновляет их состояние по мере завершения:

    • Успешно выполненные тесты обозначаются зеленым флажком, и для них указывается затраченное время: Состояние успешного выполнения для теста test_A
    • Неудачные тесты обозначаются красным крестом и дополняются ссылкой Output (Вывод), которая позволяет изучить выходные данные на консоли и выходные данные unittest , полученные по результатам этого теста: Состояние неудачного выполнения для теста test_AОписание причин неудачи для теста test_A

    Отладка тестов

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

    При тестовой отладке по умолчанию используется отладчик ptvsd 4 для Visual Studio 2017 (версии 15.8 и последующих) и debugpy для Visual Studio 2019 (версии 16.5 и последующих). Если вы хотите использовать вместо него ptvsd 3, можно выбрать параметр Использовать устаревший отладчик в меню Сервис>Параметры>Python>Отладка.

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

    Отладка теста

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

    Источник

    Оцените статью