Обработка нескольких случаев в Pytest: параметризованные тесты, тестовые приспособления и тестовые классы

В pytest существует несколько способов обработки нескольких случаев или сценариев тестирования. Вот несколько методов, которые вы можете использовать:

  1. Параметризованные тесты. Параметризованные тесты позволяют запускать одну и ту же логику тестирования с разными входными значениями. Вы можете определить тестовую функцию и указать несколько наборов параметров с помощью декоратора @pytest.mark.parameterize. При этом для каждого набора параметров будут созданы отдельные тестовые примеры.

Пример:

import pytest
@pytest.mark.parametrize("input_data, expected_output", [
    (1, 2),
    (3, 6),
    (5, 10)
])
def test_multiply_by_two(input_data, expected_output):
    result = input_data * 2
    assert result == expected_output
  1. Тестовые приспособления. Тестовые приспособления позволяют настроить тестовую среду или предоставить необходимые данные для тестовых случаев. Вы можете определить фикстуры с помощью декоратора @pytest.fixtureи использовать их в качестве аргументов в своих тестовых функциях. Определив несколько приборов, вы можете работать с разными сценариями.

Пример:

import pytest
@pytest.fixture
def setup_data():
    # Set up test data or environment
    data = [1, 2, 3, 4]
    return data
def test_data_length(setup_data):
    assert len(setup_data) == 4
def test_data_sum(setup_data):
    assert sum(setup_data) == 10
  1. Классы тестов. Вы можете организовать связанные тестовые случаи в классы. Каждый тестовый пример определяется как отдельный метод внутри класса. Это позволяет группировать тесты и использовать общую логику настройки или демонтажа с помощью приспособлений на уровне класса.

Пример:

import pytest
class TestMathOperations:
    def test_addition(self):
        assert 2 + 2 == 4
    def test_subtraction(self):
        assert 5 - 3 == 2

Используя эти методы, вы можете эффективно обрабатывать несколько случаев в pytest.