在 django tests.py 中保存函数引发错误

Posted

技术标签:

【中文标题】在 django tests.py 中保存函数引发错误【英文标题】:save function raising error in django tests.py 【发布时间】:2013-03-12 06:30:49 【问题描述】:

我的model.py是:

Sample(models.Model):
   id=models.DecimalField(max_digits=8, decimal_places=0, primary_key=True)
   name=models.CharField(max_length=12)
   length=models.DecimalField(max_digits=8, decimal_places=0)
   def save(self):
      super(Sample,self).save()

在我的tests.py中:

class SampleTestCase(TestCase):
def setUp(self):
self.sample=Sample.objects.create(id=12,name='xyz', length=33)
print self.sample.length
print "hello in setup"

我的问题是,当我使用表单或使用管理员时,数据已成功保存而没有任何错误,但是当我尝试对其进行测试时,它会引发错误:

self.sample=Sample.objects.create(id='12',name='iftikhar', length=33)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py", line 149, in create
return self.get_query_set().create(**kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 414, in create
obj.save(force_insert=True, using=self.db)
TypeError: save() got an unexpected keyword argument 'force_insert'

谁能告诉我为什么会发生这种情况 如果我从 models.py 中删除保存功能,则测试运行成功

【问题讨论】:

【参考方案1】:

您已重写 save 方法以不接受任何参数。

试试:

def save(self, *args, **kw):
      super(Sample,self).save(*args, **kw)

或者,完全省略这个覆盖方法。它什么也没做。

【讨论】:

以上是关于在 django tests.py 中保存函数引发错误的主要内容,如果未能解决你的问题,请参考以下文章

Python函数导入在Django中不起作用

我如何告诉 django-nose 我的测试在哪里?

如何将 django 单元测试分布在多个文件上?

我在哪里必须在Django中放置test _ *。py文件?

django基础二

从 django 模型的保存方法中引发 ValidationError?