【发布时间】:2021-11-29 16:52:14
【问题描述】:
我在 common/models.py 中有以下模型:
from django.db import models
from uuid import uuid4
class BaseModel(models.Model):
guid = models.UUIDField(unique=True, default=uuid.uuid4, editable=False)
class Meta:
abstract = True
在 app/models.py 我有以下内容:
from django.db import models
from common.models import BaseModel
class Entity(BaseModel):
name = models.CharField()
在测试中,我尝试通过以下方式修补 uuid4:
def test_model_create(mocker):
# Given
mock_guid = mocker.patch("uuid.uuid4", return_value="some-guid")
# When
entity = Entity.objects.create(name="test_name")
# Then
mock_guid.assert_called_once()
assert "some-guid" == entity.guid
mock_guid.assert_called_once() 返回未调用。这可能是什么问题?
【问题讨论】:
-
mocker.patch("common.models.uuid.uuid4", …)呢? -
@hoefling 我首先尝试过。但是,它没有用。
标签: python python-3.x django pytest