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

问题描述 投票:1回答:2

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

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

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

python django
2个回答
0
投票

你不能真正绕过那个检查。你最接近的是:

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

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字段。

© www.soinside.com 2019 - 2024. All rights reserved.