رفع مشکل KeyError: ‘ATOMIC_REQUESTS’ در django pytest
در این نوشته به روش حل مشکل KeyError: ‘ATOMIC_REQUESTS’ در django pytest میپردازیم.
رفع مشکل KeyError: ‘ATOMIC_REQUESTS’ در django pytest
برای حل این مشکل فایل conftest.py موجود در پروژه خود را باز کنید و به این فایل ATOMIC_REQUESTS: True را اضافه کنید. برای اضافه کردن ATOMIC_REQUESTS از قطعه کد زیر استفاده کنید:
import pytest
from django.conf import settings
@pytest.fixture(scope="session")
def django_db_setup():
settings.DATABASES["default"] = {
"ENGINE": "django.db.backends.sqlite3",
"NAME": ":memory:",
"ATOMIC_REQUESTS": True,
}
اگر سوالات بیشتری در ارتباط با pytest دارید در بخش نظرات همین نوشته برای ما بنویسید.
برای امتیاز به این نوشته کلیک کنید!
[کل: 1 میانگین: 5]



















با این روش سرعت اجرای تستها کم نمیشه؟
کمی سرعت تستها ممکنه کاهش پیدا کنه، مخصوصاً روی دیتابیسهای بزرگ، اما برای SQLite در حافظه یا تستهای کوچک معمولاً تاثیری محسوس نیست.
امکان استفاده از settings override برای ATOMIC_REQUESTS هست؟
بله، میتونی با fixture در conftest.py یا decorator @override_settings(ATOMIC_REQUESTS=True) تنظیمات رو بهصورت موقت برای تستها تغییر بدی.
این روش روی نسخههای قدیمی Django هم جواب میده؟
عمدتاً از Django 2.0 به بعد جواب میده، ولی نسخههای خیلی قدیمی ممکنه نیاز به تغییرات جزئی داشته باشن.
این تغییر روی تستهای قبلی تاثیر میذاره یا فقط تستهای بعدی؟
فقط روی تستهایی که بعد از اعمال تغییر اجرا میشن تاثیر داره. تستهای قبلی بدون تغییر باقی میمونن.
این روش روی دیتابیسهای دیگه مثل PostgreSQL هم جواب میده؟
بله، ATOMIC_REQUESTS روی PostgreSQL، MySQL و SQLite کار میکنه، ولی رفتار کمی با هر دیتابیس ممکنه متفاوت باشه (مثلاً مدیریت تراکنشها).