Установка pytest, первый assert, запуск с pytest -v — быстрая победа без лишней теории
Это самый важный урок курса. За 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) # 5mkdir pytest-tutorial
cd pytest-tutorial# macOS/Linux:
python3 -m venv .venv
source .venv/bin/activate
# Windows:
python -m venv .venv
.venv\Scripts\activateПроверка: командная строка должна показывать (.venv) в начале.
pip install pytestПроверка установки:
pytest --version
# pytest 8.0.0 (или выше)✅ Если видите версию — pytest установлен!
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 показывает ошибки:
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.
test_# ❌ ПЛОХО — pytest не найдёт эту функцию
def my_addition():
assert 2 + 2 == 4
# ✅ ХОРОШО
def test_my_addition():
assert 2 + 2 == 4test_# ❌ ПЛОХО
simple.py # pytest не найдёт
# ✅ ХОРОШО
test_simple.py # pytest найдётassert# ❌ ПЛОХО — тест всегда пройдёт
def test_no_assertion():
result = 2 + 2
# Нет проверки!
# ✅ ХОРОШО
def test_with_assertion():
result = 2 + 2
assert result == 4 # Проверка естьtest_*Вопросы ещё не добавлены
Вопросы для этой подтемы ещё не добавлены.
Далее: Базовая структура: где хранить тесты