Первый тест за 10 минут
Это самый важный урок курса. За 15 минут вы напишете и запустите свой первый тест.
Цель: Получить зелёный тест как можно быстрее — чтобы почувствовать успех и двигаться дальше.
ВАЖНО: Не углубляйтесь в детали. Просто запустите тест и увидьте PASSED. Всё остальное разберём позже.
Вы точно готовы?
Перед началом убедитесь:
# Проверьте версию Python (должна быть 3.8+)
python3 --version
# Python 3.11.0 или выше рекомендуетсяЕсли Python не установлен — установите с python.org.
Базовое знание Python:
# Вы должны понимать этот код
def add(a, b):
return a + b
result = add(2, 3)
print(result) # 5Если этот код непонятен — начните с курса Python для начинающих.
Установка pytest
Шаг 1: Создайте директорию для проекта
# Создайте папку для учебного проекта
mkdir pytest-tutorial
cd pytest-tutorialШаг 2: Создайте виртуальное окружение
# macOS/Linux:
python3 -m venv .venv
source .venv/bin/activate
# Windows:
python -m venv .venv
.venv\Scripts\activateПроверка: Командная строка должна показывать (.venv) в начале.
Шаг 3: Установите pytest
pip install pytestПроверка установки:
pytest --version
# pytest 8.0.0 (или выше)✅ Если видите версию — pytest установлен!
Первый тест
Создайте тестовый файл
# Создайте файл test_simple.py
touch test_simple.pyНапишите первый тест
Откройте test_simple.py в любом редакторе и напишите:
# test_simple.py
def test_simple_addition():
"""Самый простой тест"""
result = 2 + 2
assert result == 4Разбор кода:
def test_*— pytest автоматически находит функции, начинающиеся сtest_assert— проверка условия. ЕслиFalse— тест провалитсяresult == 4— ожидаемый результат
Ещё один тест (для понимания)
Добавьте во тот же файл:
def test_string_concatenation():
"""Тест для строк"""
greeting = "Hello, " + "pytest!"
assert greeting == "Hello, pytest!"Запуск теста
pytest test_simple.py -vОжидаемый результат:
============================ test session starts ============================
collected 2 items
test_simple.py::test_simple_addition PASSED [ 50%]
test_simple.py::test_string_concatenation PASSED [100%]
============================= 2 passed in 0.01s =============================✅ Поздравляю! Вы только что запустили свои первые тесты!
Что означает вывод?
collected 2 items— pytest нашёл 2 тестаPASSED— тест прошёл успешно ✅2 passed in 0.01s— оба теста прошли за 0.01 секунды
Эксперимент: сломанный тест
Давайте намеренно сломаем тест, чтобы увидеть как pytest показывает ошибки:
# test_simple.py
def test_broken():
"""Этот тест провалится"""
result = 2 + 2
assert result == 5 # Неправильно!Запускаем:
pytest test_simple.py -vРезультат:
test_simple.py::test_broken FAILED [100%]
=================================== FAILURES ====================================
___________________________________ test_broken _________________________________
def test_broken():
result = 2 + 2
> assert result == 5
E assert 4 == 5
test_simple.py:11: AssertionErrorРазбор ошибки:
FAILED— тест провалился ❌assert 4 == 5— pytest показывает ЧТО именно сломалосьAssertionError— ошибка утверждения
Исправление:
# ❌ ПЛОХО
assert result == 5
# ✅ ХОРОШО
assert result == 4Исправьте и запустите снова — должно быть PASSED.
Типичные ошибки новичков
Ошибка #1: Забыли префикс test_
# ❌ ПЛОХО — pytest не найдёт эту функцию
def my_addition():
assert 2 + 2 == 4# ✅ ХОРОШО
def test_my_addition():
assert 2 + 2 == 4Ошибка #2: Файл не начинается с test_
# ❌ ПЛОХО
simple.py # pytest не найдёт
# ✅ ХОРОШО
test_simple.py # pytest найдётОшибка #3: Забыли assert
# ❌ ПЛОХО — тест всегда пройдёт
def test_no_assertion():
result = 2 + 2
# Нет проверки!# ✅ ХОРОШО
def test_with_assertion():
result = 2 + 2
assert result == 4 # Проверка естьЧто вы изучили
- Установили pytest через pip
- Создали первый тест с функцией
test_* - Использовали assert для проверки
- Запустили тесты с pytest
- Поняли вывод PASSED/FAILED
- Увидели как выглядят ошибки в тестах
Следующий урок
Отлично! Вы уже умеете запускать тесты. Но где их хранить? Как организовать структуру проекта?
Переходите к уроку 1: Базовая структура: где хранить тесты
В следующем уроке вы узнаете:
- Куда положить тесты (
tests/директория) - Правила именования
- Как pytest находит тесты автоматически
Устранение неисправностей
Убедитесь, что виртуальное окружение активировано: source .venv/bin/activate
Установите pytest: pip install pytest
Убедитесь, что тестовые файлы соответствуют паттерну test_*.py
Проверьте:
- Проверьте, что директория tests/ есть в проекте
- Функция называется
def test_*() - Запускайте из корня:
pytest - Вы в правильной директории (
cd pytest-tutorial)
Проверьте отступы (4 пробела) и двоеточия после def