PyTest: фреймворк тестирования Python для бэкэнд-инженеров

0 Акции
0
0
0
0

Введение

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

Они предлагают следующие преимущества:

  • Тестовые фреймворки улучшают качество кода.
  • Автоматизированное тестирование экономит время и усилия.
  • Возможность повторного использования кода оптимизирует усилия по тестированию и сокращает повторения.
  • Фреймворки тестирования Python легко интегрируются с другими инструментами, модулями и библиотеками.

В этом пошаговом руководстве вы узнаете, как реализовать PyTest — один из самых популярных фреймворков тестирования Python.

Предпосылки

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

  • Установка Python: Убедитесь, что Python установлен в вашей системе. Вы можете скачать последнюю версию Python с официального сайта Python.
  • Установка Pip: Pip (установщик пакетов для Python) — это инструмент для управления пакетами, библиотеками и зависимостями в Python. Он позволяет устанавливать и управлять пакетами Python. Убедитесь, что pip установлен в вашей системе.

Проверить, установлен ли pip, можно, выполнив следующую команду в командной строке/терминале:

python -m pip --version

Или

python3 -m pip --version

Что такое фреймворк тестирования Python?

Фреймворк тестирования Python — это набор инструментов и библиотек, предоставляющих структуру и рекомендации по написанию и выполнению тестов на Python для автоматизированного тестирования. Он гарантирует соответствие кода требуемым стандартам качества. Он необходим и полезен каждому бэкенд-разработчику, инженеру-программисту, DevOps-разработчику и инженеру по контролю качества/тестированию. Среди известных и широко используемых фреймворков тестирования Python — Pytest, PyUnit, DocTest, Testify, Robot и многие другие.

Реализация PyTest

Установка PyTest

Чтобы начать работу с PyTest, необходимо установить его в системе. Откройте терминал и выполните следующую команду:

pip install pytest

Эта команда загрузит и установит последнюю версию PyTest и ее зависимости.

Написание тестовых заданий

Теперь, когда PyTest установлен, давайте начнем писать несколько простых модульных тестовых случаев.

Создайте новый файл Python и назовите его test_backend.py Этот файл определяет наши тестовые случаи с использованием синтаксиса PyTest.

Примечание: По умолчанию PyTest обнаруживает и запускает все тестовые случаи в файлах, имена которых начинаются с «test_» или заканчиваются на «_test». Процесс обнаружения pytest рекурсивно сканирует текущую папку и её подпапки на наличие файлов, имена которых начинаются с ”test_“ или заканчиваются на ”_test». Затем запускаются тесты из этих файлов.

import pytest
def test_addition():
assert 3 + 3 == 6
def test_subtraction():
assert 5 - 4 == 1
def test_multiplication():
assert 4 * 4 == 16
def test_division():
assert 10 / 2 == 5

В примере выше мы определили четыре базовых модульных теста как функции: test_addition, test_subtraction, test_multiplication и test_division. Ключевое слово assert используется при отладке кода и позволяет проверить, возвращает ли определённое условие в коде значение True. В противном случае возвращается AssertionError.

Выполнение тестовых случаев, выполнение определенных тестов

Чтобы запустить тесты, перейдите в папку, в которой вы сохранили файл test_backend.py, а затем выполните следующую команду в терминале или командной строке:

pytest

Или

python -m pytest

Выход:

Output
test session starts
==================================================
platform darwin -- Python 3.9.6, pytest-7.4.3, pluggy-1.3.0
rootdir: ~/Python Testing Frameworks
collected 4 items
test_backend.py ....
==================================================
4 passed in 0.01s 

Используя PyTest, вам не нужно вручную запускать каждый тест в файле. Инструмент автоматически найдёт и выполнит все заданные тестовые случаи. Если всё пройдёт успешно и все утверждения верны, вы получите наглядную сводку результатов тестирования с указанием количества пройденных тестов, как показано выше.

Предположим, что один из тестов в этот момент не пройден. Тогда мы увидим следующий вывод:

Output
test session starts
==================================================
platform darwin -- Python 3.9.6, pytest-7.4.3, pluggy-1.3.0
rootdir: ~/Python Testing Frameworks
collected 4 items
test_backend.py ...F 
================================================== [100%]
FAILURES
==================================================
test_division 
def test_division():
> assert 10 / 2 == 6
E assert (10 / 2) == 6
test_backend.py:13: AssertionError
short test summary info
==================================================
FAILED test_backend.py::**test_division** - assert (10 / 2) == 6
1 failed, 3 passed in 0.01s 
Экспериментальное открытие

PyTest предлагает мощные возможности обнаружения тестов, позволяющие структурировать тестовые случаи. По умолчанию PyTest обнаруживает и выполняет все тестовые случаи в файлах с именами, начинающимися с «test_» или заканчивающимися на «_test». Однако вы можете настроить процесс обнаружения тестов, используя различные параметры командной строки или настроив файл. pytest.ini Настроить.

Например, вы можете указать конкретный каталог для поиска тестовых модулей, выполнив следующую команду:

pytest tests/

Эта команда запустит только тестовые случаи в каталоге “tests”.

Испытательное оборудование

Инструменты тестирования в PyTest — это замечательные компоненты, которые можно использовать повторно для создания единообразной базовой модели тест-кейсов. Они пригодятся, когда вам нужно создать предварительные условия для тестов и очистить ресурсы после их завершения. PyTest позволяет легко определять и эффективно использовать инструменты тестирования.

Чтобы определить тестовую оснастку, необходимо использовать декоратор. @pytest.fixture Например, фикстура с именем db, определённая ниже, откроет соединение с базой данных и закроет его после выполнения операции. Мы можем определить эту фикстуру следующим образом:

import pytest
@pytest.fixture
def db():
# Set up the database connection
db = create_db()
yield db
# Clean up the database connection
db.close()

В этом примере оператор yield определяет код, который будет выполнен после выполнения тестовых случаев. Ключевое слово yield используется для управления потоком выполнения функции-генератора, аналогично оператору return, используемому для возврата значений в Python.

Чтобы использовать фикстуру в тесте, необходимо передать ее в качестве аргумента тестовой функции.

Например:

def query_test(db):
results = db.query("SELECT * FROM users")
assert len(result) == 12

В этом тестовом случае прибор дБ Автоматически функционировать query_test() Он внедряется и позволяет использовать его для выполнения операций с базой данных. Фикстуры полезны разработчикам для подготовки определённых тестовых сред, таких как подключения к базе данных, клиенты API или фиктивные объекты. Используя фикстуры, разработчики могут обеспечить изолированность и повторяемость тестов.

Инженеры-испытатели также могут использовать оборудование для подготовки тестируемой системы, управления тестовыми данными или моделирования сложных сценариев.

Кроме того, устройства можно использовать для очистки ресурсов после тестирования, повышения надежности и поддержания тестового набора.

Результат

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может понравиться