Django:模拟模型中的字段
我该怎么给这个模型的用户字段赋值一个假对象呢?有没有办法绕过“'SomeModel.user' 必须是一个 'User' 实例”的检查?
class SomeModel(models.Model):
user = models.ForeignKey(User)
我并不打算保存这个模型,我只是想单纯地测试一下这个模型上的一个方法。而且我也不想创建一个真实的用户模型。
2 个回答
9
你可以使用 unittest.patch
来模拟一个属性:
class TestThing(django.test.TestCase):
@unittest.patch('my_app.models.SomeModel.user', new_callable=unittest.PropertyMock)
def test_thing(self, user_field):
user_field.return_value = 5
...
这个方法在Django的字段上也能使用。
-5
你其实无法绕过那个检查。你能做到的最接近的方式是:
class SomeModel(models.Model):
user_id = models.IntegerField(max_length=10)