Skip to main content
Back to course
Pytest с нуля: тесты, которые реально работают
1 / 119%

🚀 Первый тест за 10 минут: настройка и быстрый старт

15 минут

⚠️ Урок устарел. Свежая версия с актуальными практиками находится в курсе pytest-basics: Первый тест за 10 минут.

Цель урока — за 15 минут почувствовать ценность тестов

✅ Один файл кода + один файл тестов
✅ Красная/зелёная галочка без сложной настройки
✅ Запуск из терминала и из IDE в один клик

Шаг 1. Установка и первый тест (5 минут)

Установите pytest:

pip install pytest

Создайте два файла в одной папке:

# bank_account.py
class BankAccount:
    def __init__(self):
        self.balance = 0
 
    def deposit(self, amount):
        self.balance += amount
 
    def withdraw(self, amount):
        if amount > self.balance:
            raise ValueError("Not enough money")
        self.balance -= amount
# test_bank_account.py
from bank_account import BankAccount
 
def test_deposit():
    account = BankAccount()
    account.deposit(100)
    assert account.balance == 100
 
def test_withdraw():
    account = BankAccount()
    account.deposit(100)
    account.withdraw(30)
    assert account.balance == 70

Запуск из терминала:

pytest -v

Получили зелёную галочку — цель выполнена.

Шаг 2. Ловим первый баг (3 минуты)

Сломайте метод withdraw:

def withdraw(self, amount):
    self.balance -= amount  # 💥 убрали проверку

Перезапустите pytest -v. Тест упадёт с ValueError отсутствует — это и есть доказательство пользы тестов: баг пойман до релиза.

Шаг 3. Запуск из IDE (VS Code, 4 минуты)

  1. Установите расширение Python.
  2. Откройте test_bank_account.py и нажмите подсвеченную кнопку Run Test над тестом.
  3. Или откройте панель Testing (иконка мензурки) и запустите все тесты.

Шаг 4. Что дальше? (3 минуты)

  • Следующий урок: как раскладывать код и тесты по папкам и не ловить ImportError.
  • Дальше: pytest.raises для проверки ошибок и фикстуры для подготовки данных.
  • Ещё дальше: конфигурация pytest.ini и запуск в CI.

Минимальная структура

first-test/
  bank_account.py
  test_bank_account.py

Если что-то пошло не так

ModuleNotFoundError: держите код и тест в одной папке на этом уроке. Структуру проекта покажем дальше.
pytest: command not found: убедитесь, что вы в том же виртуальном окружении, где ставили pytest (python -m venv .venv && source .venv/bin/activate при необходимости).

Чеклист

✅ Установили pytest
✅ Запустили тесты из терминала
✅ Увидели, как тест ловит баг
✅ Запустили тесты из IDE

Поздравляю! Вы написали свой первый тест и почувствовали контроль над кодом. 🎉