2011-03-20 22 views
2

目前我做的一个关于可重用的Django应用程序TDD。一个测试应该确保我的视图只返回具有过去发布日期的文章。我在Django测试很新。到目前为止,我已经学会了如何使用.json文件作为我的测试类的灯具。Django的测试夹具:如何应对动态值(即未来的日期时间)

然而,对于这个测试我不想插入发布日期是1000个在未来几年。在所有其他物种都可能发现我们的古代互联网之后,请查看我的来源,并想知道为什么我的测试失败了:)还有其他什么方法可以解决这个问题?静态.json文件似乎有点难以维护以及应用程序的增长......在我的测试中嘲笑datetime.datetime.now()方法也很乏味。

必须有从目前生产上飞以.json夹具试运行之前,总是有2天为发布最新的一些条目我一个简单的方法...

回答

0

惩戒日期时间是我的第一个想法很好,但作为洗衣店pointet出在自己的博客发布自己,这是相当哈克和坏。

我想出了另一种解决方案:

我只是放弃了以.json灯具。我甚至不知道Django为什么鼓励使用它们。他们看起来很丑,他们不可能维持。

相反,我添加了一个模块test_data.py我的灯具文件夹。该模块导入我的模型并定义了一些为我创建测试数据的好方法。在我的tests.py中,我放弃了fixtures = ['some_json_file']这一行,并添加了一个setUp()方法。这个方法从我的test_data.py模块执行我的'动态装置'。

这是如此简单而明显的是,我不知道是否有什么不妥这种方法。如果没有人对这个解决方案发表评论,我会在几个星期左右接受标记...

+0

嗯,也许一件事是不对的做法是,通过使用这些模型本身来创建测试数据,我使用我想测试自己,以便生成测试数据的事情。这意味着,如果我重写save()方法,生成我的测试数据可能已经引入了错误的数据......但在大多数情况下,这应该被我在测试中做出的健全声明所捕获,所以现在我不认为这是一个超级大的问题... – mbrochh 2011-03-22 01:20:39

0

您可以尝试使用django dynamic fixture,它会自动为您填写日期/时间属性。

+0

自动是好的,但我怎么得到它填写例如。如果我必须为两种情况测试不同的结果,那么在未来“和”过去“的日期? – Florian 2013-03-13 12:19:11

相关问题