Делал ли параметризацию тестов?

«Делал ли параметризацию тестов?» — вопрос из категории Фреймворки тестирования, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, постоянно использую параметризацию. Это один из основных приёмов для создания эффективных и поддерживаемых наборов автотестов.

Примеры из практики:

  1. В pytest (Python): Использую декоратор @pytest.mark.parametrize для data-driven тестирования.

    import pytest
    
    @pytest.mark.parametrize("login, password, expected_result", [
        ("valid_user", "correct_pass", "SUCCESS"),
        ("invalid_user", "wrong_pass", "ERROR"),
        ("", "", "VALIDATION_ERROR"),
    ])
    def test_login_functionality(login, password, expected_result):
        # Вызов метода авторизации и проверка результата
        actual_result = authorize(login, password)
        assert actual_result == expected_result
  2. В JUnit 5 (Java): Использую аннотации @ParameterizedTest и @CsvSource или @MethodSource.
    @ParameterizedTest
    @CsvSource({
        "2, 3, 5",
        "10, -5, 5",
        "0, 0, 0"
    })
    void testAddition(int a, int b, int expectedSum) {
        Calculator calc = new Calculator();
        assertEquals(expectedSum, calc.add(a, b));
    }

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