Можно ли передать в функцию несколько параметров?

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

Ответ

Да, конечно. В Python функция может принимать множество параметров разных типов. Это основа для написания модульных и параметризованных тестов.

Основные способы передачи аргументов:

  1. Позиционные аргументы: Передаются по порядку.
    
    def test_user_login(username, password, expected_status):
    # Тело теста: выполняем логин и проверяем статус
    actual_status = login(username, password)
    assert actual_status == expected_status, f"Login failed for {username}"

Вызов с позиционными аргументами

test_user_login("test_user", "Qwerty123", 200)


2.  **Именованные (keyword) аргументы:** Передаются по имени, порядок не важен.
    ```python
test_user_login(expected_status=200, password="Qwerty123", username="test_user")
  1. Параметризация тестов (в pytest): Позволяет запустить один тест с разными наборами данных.
    
    import pytest

@pytest.mark.parametrize("username, password, expected_status", [ ("valid_user", "pass123", 200), ("invalid_user", "wrong", 401), ("", "pass123", 400), # Пустое имя пользователя ]) def test_login_parameterized(username, password, expected_status): actual_status = login(username, password) assert actual_status == expected_status



**Для тестирования это критически важно:** мы можем создавать гибкие тестовые функции, которые проверяют различные сценарии (позитивные, негативные, граничные случаи), передавая разные комбинации входных данных и ожидаемых результатов.