У меня есть модель с полем uuid
со значением по умолчанию в качестве функции.
from uuid import uuid4
def _new_uid():
return uuid4()
class A(models.Model):
name = models.CharField()
uid = models.UUIDField(unique=True, default=_new_uid, editable=False)
В тесте я хочу установить _new_uid
метод return 11111111-1111-1111-1111-111111111111
.
@patch('module.foo._new_uid',
Mock(return_value='11111111-1111-1111-1111-111111111111'))
def test_create_A():
response = api_client.post('/api/a-list/', {
'name': 'test',
})
assert response.json() == {
'_uid': '11111111-1111-1111-1111-111111111111',
'name': 'test'
}
Но все равно возвращается случайный uuid. Я предполагаю, что это происходит потому, что инициализация модели завершена до запуска теста.
Я могу избежать этого, изменив параметр по умолчанию на:
uid = models.UUIDField(unique=True, default=lambda: _new_uid(), editable=False)
Можно ли это сделать, не меняя default
на лямбдузвоните