Вступить в клуб →
средняявопросТестирование: pytest, фикстуры, моки

Тесты проходят по одному, а вместе падают в зависимости от порядка

@pytest.fixture(scope="session")
def cart():
    return {"items": []}

def test_add_item(cart):
    add_item(cart, "book")
    assert cart["items"] == ["book"]

def test_empty_cart_total(cart):
    assert cart_total(cart) == 0

Каждый тест по отдельности зелёный. При полном прогоне test_empty_cart_total падает. В чём причина?

  • С scope="session" оба теста получают один объект, и первый его изменил
  • pytest запускает тесты параллельно, и они гоняются за словарь
  • Фикстура с scope="session" пересоздаётся перед каждым тестом, но медленно
  • cart_total нельзя вызывать в том же файле, где вызывается add_item

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела