Исследователи из JetBrains подсчитали, что каждый второй программист, работающий на языке Python, использует фреймворк PyTest для автоматизации тестирования. Почему он так популярен? Подробно разбираемся в возможностях решения и его преимуществах для работы QA-специалистов.
PyTest — фреймворк для быстрого создания автоматических тестов с возможностью масштабирования на языке Python. С помощью этого решения можно не только поддерживать сложное функциональное тестирование приложений и библиотек, но и настраивать параметры запуска тестов, а также разрабатывать окружение для их реализации.
Напишем тест для проверки работы функции sum2 (x,y). Она возвращает сумму двух входящих аргументов. В тестовом случае test_sum2() мы будем использовать assert для сравнения результата вызова функции sum2 () с ожидаемым значением. Тест будет считаться пройденным, если результаты совпадут, и непройденным, если будут обнаружены расхождения. В этом случае при использовании команды pytest мы увидим сообщение об ошибке.
def sum2(x, y):
return x + y
def test_sum2():
assert sum2(10, 7) == 17
Также полезно: Будет ли востребована профессия тестировщика в 2025 году?
В основу работы PyTest заложен несложный алгоритм: решение использует функции описания тестовых случаев, автоматически выявляет эти функции в коде и выполняет их. Используя PyTest, специалисты могут внедрять в код теста следующие функции и механизмы:
Пример кода:
def multiply(a, b):
return a * b
def test_multiply():
assert multiply(3, 4) == 12
assert multiply(0, 3) == 0
assert multiply(-2, 3) == -6
Пример кода:
def multiply(a, b):
return a * b
@pytest.mark.parametrize("a, b, expected_result", [ (3, 4, 12), (0, 3, 0), (-2, 3, -6), ])
def test_multiply(a, b, expected_result):
assert multiply(a, b) == expected_result
Пример кода:
import pytest
@pytest.fixture
def setup_data():
data = [5, 6, 7, 8, 9]
return data
def calculate_sum(data):
return sum(data)
def test_calculate_sum(setup_data):
result = calculate_sum(setup_data)
assert result == 35
Пример кода с использованием метки smoke для быстрого проведения основных тестов и regression для проверки стабильности и воспроизводимости отдельных функций приложения:
import pytest
@pytest.mark.smoke
def test_addition():
result = 3 + 3
assert result == 6
@pytest.mark.regression
def test_subtraction():
result = 7 - 3
assert result == 4
@pytest.mark.regression
def test_multiplication():
result = 4 * 5
assert result == 20
@pytest.mark.smoke
@pytest.mark.regression
def test_division():
result = 20 / 2
assert result == 10
Этот механизм дает возможность подстроить тестирование под требования любого проекта.
Пример кода для проверки корректности операций сложения и вычитания:
import pytest
def add(a, b):
return a + b
def subtract(a, b):
return a - b
def test_addition():
result = add(2, 2)
assert result == 4
def test_subtraction():
result = subtract(5, 3)
assert result == 2
Для запуска тестовых сеансов и реализации всех тестов из этого каталога достаточно указать pytest в командной строке.
Читайте также: Какие бывают этапы и виды тестирования: подробный разбор
Разработчики и QA специалисты выбирают PyTest благодаря следующим преимуществам:
Но отмечают, что у PyTest присутствуют и некоторые недостатки:
Слушатели курса «Тестирование с PyTest» подробно изучают все элементы фреймворка и последовательность написания в нем тестовых случаев, а также приобретают практические навыки в работе с PyTest с помощью тренажера.