Пишем и запускаем первый тест, который сразу покажет ценность: ловим баг до запуска кода
⚠️ Урок устарел. Свежая версия с актуальными практиками находится в курсе pytest-basics: Первый тест за 10 минут.
✅ Один файл кода + один файл тестов
✅ Красная/зелёная галочка без сложной настройки
✅ Запуск из терминала и из IDE в один клик
Установите 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Получили зелёную галочку — цель выполнена.
Сломайте метод withdraw:
def withdraw(self, amount):
self.balance -= amount # 💥 убрали проверкуПерезапустите pytest -v. Тест упадёт с ValueError отсутствует — это и есть доказательство пользы тестов: баг пойман до релиза.
test_bank_account.py и нажмите подсвеченную кнопку Run Test над тестом.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
Поздравляю! Вы написали свой первый тест и почувствовали контроль над кодом. 🎉
Далее: Структура проекта и импорты без боли