Ответ
Стандартная структура автотеста следует паттерну AAA (Arrange-Act-Assert) или его расширенной версии и состоит из четырёх этапов:
-
Подготовка (Arrange / Setup)
- Настройка тестового окружения: создание тестовых данных, инициализация объектов, настройка моков (mock) или стабов (stub).
-
Действие (Act)
- Непосредственное выполнение тестируемого действия: вызов метода, отправка HTTP-запроса, клик по элементу UI.
-
Проверка (Assert)
- Верификация результата: сравнение фактического результата с ожидаемым с помощью утверждений (assertions).
-
Очистка (Teardown)
- Приведение системы в исходное состояние: удаление тестовых данных, закрытие соединений, сброс моков. Часто выполняется автоматически (через аннотации
@pytest.fixture,@AfterEachв JUnit).
- Приведение системы в исходное состояние: удаление тестовых данных, закрытие соединений, сброс моков. Часто выполняется автоматически (через аннотации
Пример на Python (pytest):
import pytest
def test_user_login_success():
# 1. Arrange (Подготовка)
test_user = User(email="test@example.com", password="secure_pass")
db.session.add(test_user)
db.session.commit()
# 2. Act (Действие)
response = client.post("/login", json={
"email": "test@example.com",
"password": "secure_pass"
})
# 3. Assert (Проверка)
assert response.status_code == 200
assert "access_token" in response.json
assert response.json["user_id"] == test_user.id
# 4. Teardown (Очистка) - в pytest часто через фикстуры
db.session.delete(test_user)
db.session.commit()