Django:在模型上模拟一个字段

时间:2011-07-14 09:14:36

标签: python django

如何将模拟对象分配给此模型上的用户字段?无论如何绕过'“SomeModel.user”必须是“用户”实例'检查?

 class SomeModel(models.Model):
     user = models.ForeignKey(User)

我没有保存这个模型,它纯粹是为了对该模型上的方法进行单元测试。我也不想创建真正的用户模型。

2 个答案:

答案 0 :(得分:0)

你无法绕过那个检查。你能得到的最接近的是:

class SomeModel(models.Model):
    user_id = models.IntegerField(max_length=10)

答案 1 :(得分:0)

您可以使用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字段。