Django Enum not reflecting @override_settings()
from django.conf import settings
from django.test import TestCase
class Enum1(Enum):
X = f'{settings.X}'
@override_settings(X='abc')
class Test1(TestCase):
def test1(self):
self.assertEqual(settings.X, Enum1.X.value) # Doesnt work
- I have variable
X
in settings.py - I modify it in this test case to X='abc'
- But the Enum is still using its old value.
Is there a way to make Enum use new value ?
One workaround is if I create a func in Enum1
then it works. eg:
class Enum1(Enum):
@classmethod
def get_x(cls):
return f'{settings.X}'
The overall takeaway is that any class variable doesnt reflect override_settings() changes. Only a function which is not instantiated initially when py file gets imported, reflects those changes.