2016-08-05 79 views
3

我正在为我的Django应用程序编写单元测试。目前我使用factory_boy来制作假物件进行测试。这适用于我的大多数测试,但我遇到以下问题:我的factory_boy对象未显示在{model}.objects中。例如,我想测试下面的方法在我的串行:Django REST框架 - 单元测试的假对象

def get_can_edit(self, obj): 
    request = self.context.get('request') 
    user = request.user 
    admin = SimpleLazyObject(obj.admin) 
    user = User.objects.get(username=request.user) 
    return user == obj.admin 

做的时候有一个调试器,我已经确定request.user正确有我的假用户,但User.objects不有我的假用户。

我想知道是否有一个简单的替代factory_boy,实际上将我的假物件添加到{model}.objects或如果我只是不正确地使用factory_boy?或者也许有一种完全不同的方法......谁知道。

下面的代码:

The serializer

The test

+0

你可能会喜欢,这也:https://github.com/vandersonmota/model_mommy –

回答

2

您需要继承DjangoModelFactory而不是Factory基类中的UserFactory才能将其保存到数据库中的对象。

factory_boy docs:

所有工厂的Django的Model应该使用DjangoModelFactory 基类。

class UserFactory(factory.DjangoModelFactory): # use DjangoModelFactory base class 

    class Meta: 
     model = models.User 
+0

非常感谢!那样做了。 – Tom