Тесты проходят по одному, а вместе падают в зависимости от порядка
@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
