我正在为我的Django应用程序编写单元测试。目前我正在使用factory_boy制作虚假对象进行测试。这适用于我的大多数测试,但我遇到以下问题:我的factory_boy对象没有显示在{model}.objects
中。例如,我尝试在序列化程序中测试以下方法:
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?或者也许有一种完全不同的方法......谁知道呢。
以下是代码:
答案 0 :(得分:2)
您需要继承Factory
而不是UserFactory
基类,以便将对象保存到数据库中。
Django
Model
的所有工厂都应使用DjangoModelFactory
基类。
class UserFactory(factory.DjangoModelFactory): # use DjangoModelFactory base class
class Meta:
model = models.User