Сообщить об ошибке.

Краткий обзор раздела: Фреймворк pytest в Python, тестирование кода

Содержание с кратким описанием:

ОБЗОР: Фреймворк pytest в Python, тестирование кода.
Фреймворк pytest позволяет легко писать небольшие, удобочитаемые тесты и может масштабироваться для поддержки сложного функционального тестирования приложений и библиотек. Для работы pytest требуется: Python 3.7+ или PyPy3.
Интеграция с проектом тестов pytest в Python.
Для разработки и интеграции с проектом pytest рекомендуется использовать виртуальные среды venv для и pip для установки приложения и любых зависимостей, а также сам фреймворк pytest. Это гарантирует, что код и зависимости будут изолированы от системной установки Python.
Как запускать/вызывать тесты pytest в Python.
Как правило, pytest вызывается с помощью команды pytest (другие способы вызова смотрите ниже). Это выполнит все тесты во всех файлах, имена которых следуют форме test_*.py или *_test.py в текущем каталоге и его подкаталогах. В более общем плане pytest следует стандартным правилам обнаружения тестов
Передача значений аргументов в тесты, @mark.parametrize в pytest Python.
Встроенный декоратор @pytest.mark.parametrize() позволяет передавать значения аргументам для тестовой функции. Значения параметров передаются в тесты как есть (без копирования).
Область/scope действия фикстур модуля pytest в Python.
Если фикстура используется несколькими тестами, то ее запуск для каждого теста вызовет много накладных расходов. Область действия scope позволяет передавать один экземпляр фикстуры нескольким тестам, расположенным в этой области.
Фикстура как аргумент теста, модуль pytest в Python.
Имя функции-фикстуры можно передавать в качестве аргумента другой функции (тесту или фикстуре). Для каждого аргумента, фикстура предоставляет объект. В материале разбирается создание контекста соединения в фикстуре, передача фикстуры тестовой функции для выполнения тестов.
Передача параметров (params) в фикстуру pytest в Python.
В фикстуры можно передавать параметры для неоднократно выполнения тестов, использующих эти фикстуры. Аргумент params в декораторе @pytest.fixture() принимает список параметров, для каждого из которых фикстура будет выполняться и получать значение через request.param.
Декоратор mark.usefixtures и autouse-фикстуры модуля pytest в Python.
В материале рассматривается как неявно вызвать фикстуру декоратором @pytest.mark.usefixtures, от работы которой зависит прохождение теста, а так-же автоматически вызываемые фикстуры в области их видимости.
Переопределение фикстур в тестах модуля pytest в Python.
В относительно большом наборе тестов, чтобы код теста оставался читабельным и удобным в сопровождении, скорее всего, потребуется переопределить глобальную или корневую фикстуру локально определенной.
Пропуск тестов: skip() и skipif() с модулем pytest в Python.
Фреймворк pytest может обрабатывать особым образом тестовые функции, которые не могут быть запущены на определенных платформах или которые, ожидаемо, потерпят неудачу, и при этом представлять тестовую сводку, сохраняя зеленый набор тестов. Использование mark.skip и mark.skipif.
Ожидаемо падающие тесты xfail(), модуль pytest в Python.
Маркер pytest.mark.xfail() означает, что тест должен ожидаемо не пройти (выдать ошибку). Типичным примером является проверка еще не реализованной функции или еще не исправленной ошибки.
Функция pytest.raises() модуля pytest в Python.
Чтобы убедиться в том, что вызвано ожидаемое исключение, нужно использовать функцию pytest.raises(). Использование этой функции скорее всего пригодится, когда тестируются исключения, генерируемые собственным кодом
Пользовательские pytest.mark с аргументами модуля pytest в Python.
Фреймворк pytest создает пользовательские метки с аргументами динамически. Затем созданные метки применяются к функциям в качестве декоратора. Аргументы пользовательских меток читаются фикстурой тестовой функции и могут передаваться в саму тестовую функцию.
Объект фикстуры request модуля pytest в Python.
Функции фикстуры могут принимать объект request для самоанализа "запрашивающей" тестовой функции, класса или контекста модуля.
Шаблон: фикстура как фабрика, модуль pytest в Python.
Суть в том, чтобы НЕ возвращала данные из фикстуры напрямую, а возвращать функцию, которая будет генерировать данные в тестовой функции по мере необходимости. Другими словами, возвращаемая фикстурой функция может быть вызвана в тесте неоднократно.
Отладка тестов (PDB и faulthandler) pytest в Python.
C помощью опции командной строки фреймворк pytest позволяет перейти в приглашение PDB. Pytest поддерживает использование breakpoint(). Для сброса трассировок при ошибке или по истечении времени ожидания можно использовать стандартный модуль faulthandler.
Работа с предупреждениями warning, модуль pytest в Python.
pytest автоматически ловит предупреждения во время выполнения теста и отображает их в конце сеанса. В pytest есть опция CLI -W для управления предупреждениями: игнорировать, отображать или преобразовывать в ошибки. Декоратор @pytest.mark.filterwarnings добавляет фильтры предупреждений
Хук pytest_generate_tests модуля pytest Python.
Иногда нужно реализовать свою собственную схему параметризации или реализовать некоторый динамизм для определения параметров или области действия фикстуры. Для этого можно использовать хук pytest_generate_tests, который вызывается при сборе тестовой функции.
Управление выводом отчета о тестах pytest в Python.
Управление детализацией сводного отчета тестов pytest и управление выводом отчета трассировки.
Фикстура monkeypatch модуля pytest в Python.
Фикстура monkeypatch помогает изменить поведение функции или свойства класса для теста, временно изменить глобальный словарь конфигурации или переменную среду для теста, временно изменить контекст текущего рабочего каталога во время теста или sys.path для импорта.
Логирование (logging) журнала в pytest Python.
Модуль pytest автоматически фиксирует сообщения WARNING и выше c отображением (номер строки, уровень логирования и сообщение) в отдельном разделе для каждого неудавшегося теста. Внутри тестов можно изменить уровень логирования для захваченных сообщений журнала при помощи встроенной фикстуры caplog.