Django TestCase不保存我的模型 - python

我目前正在为Django应用编写一些测试。我的应用程序的signal.py文件中具有以下独立功能:

def updateLeaveCounts():
   # Setting some variables here
    todaysPeriods = Period.objects.filter(end__lte=today_end, end__gte=today_start).filter(request__leavetype="AN")
    for period in todaysPeriods:
        print period
        counter = LeaveCounter.objects.get(pk=period.request.submitter)
        # some Logic here
        period.batch_processed = True
        period.save()

在我的TestCase中,我称其为:

def test_johnsPostLeaveCounters(self):
    # Some setup here
    p = Period.objects.create(request=request,start=datetime(today.year,today.month,today.day,9),end=datetime(today.year,today.month,today.day,16,30),length='whole')
    updateLeaveCounts()
    self.assertEqual(p.batch_processed,True)

updateLeaveCounts()在for循环中捕获了我新创建的Period对象(我可以看到它的详细信息由print period打印到控制台),但是我的assertEqual()测试失败-告诉我batch_processed属性仍然为False。

好像没有调用period.save()事务。

我知道在1.8之前的Django版本中,您必须使用TransactionTestCase类,但是此刻我正在为该项目运行1.8.3,所以我不认为这是问题所在。

我需要做些什么才能使TestCases正确反映我在此功能中执行的model.save()动作,从而使该功能被测试覆盖吗?

参考方案

尝试使用refresh_from_db:

# ...
updateLeaveCounts()
p.refresh_from_db()
self.assertEqual(p.batch_processed, True)
# ...

将Django博客项目集成到HTML网站中 - python

我有一个经常使用HTML5,CSS3,JQUERY和静态图像的网站。我也有一个用Django编写的Blog,我想将其集成到网站中。我对Django真的很陌生,所以我想知道哪种方法是最好的使用方法。我应该将网站代码集成为Django项目的一部分,还是有其他解决方案?谢谢! 参考方案 您有2种方法将当前站点与Django集成。1)您可以使用API编写Django…

如何在Django中解决模块名称冲突? - python

创建Django应用程序时出错:python端发生错误。退出代码:1,err:CommandError:'untitled1'与现有Python模块的名称冲突,因此不能用作项目名称。请尝试使用其他名称。 python大神给出的解决方案 您正在使用哪个版本的python?升级您的django版本或降级您的python版本,这应该可以解决问题。您可以在cl中执行…

从Django的角度来看,“应用程序”如何工作? - python

首先,问题是技术性的,而不是概念性的。文档在不同地方提到您应该将INSTALLED_APPS应用程序的根模块放入其中。但是,该模块应该包含什么?按照惯例,startapp myapp创建的大多数文件都在那里。例如,urls, views, admin文件是从其他模块通过完全限定名称导入的,并且实际上可以在任何地方,因此它们只是约定。在django逻辑中似乎唯…

如何从Django模型生成文档? - python

目前,我们将Sphinx用于项目文档和Django模型字段描述。主要问题是:更改模型后,我们手动更新了Sphinx文档,有时会忘记/错过文档中的某些字段。有一些用于基于Django模型生成文档的工具吗? 参考方案 documentation说: Django的文件使用Sphinx文件系统, 转是基于docutils的。基本思想是格式化 纯文本文档已转换为HT…

处理后如何删除照片? - python

我的Django模型中有两个字段: class Staff(models.Model): photo = models.FileField(blank=True, null = True) encodings = JSONField() 我从表单获取照片,然后使用该照片获取编码。处理后如何删除照片?我试过了self.photo = None or self.…