Введение
Как инженеру службы поддержки или инженеру по контролю качества/тестированию, вам важно обеспечить качество и надёжность вашего кода. Один из способов добиться этого — использовать фреймворки 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. Постоянное написание и обновление тестовых случаев крайне важно по мере развития вашей кодовой базы. Уделяя время и силы тестированию, вы сможете быстрее выявлять ошибки, повышать качество кода и создавать более надёжное и стабильное программное обеспечение.









