Skip to main content
Back to course
Pytest с нуля: Первые тесты за 2.5 часа
1 / 813%

Первый тест за 10 минут

15 минут

Это самый важный урок курса. За 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

Первый тест за 10 минут — Pytest с нуля: Первые тесты за 2.5 часа — Potapov.me