2011-06-09 30 views

回答

0

你可以尝试在setUp()中定义你自己的验证方法。测试你的灯具是否被加载很容易,但是,验证你的灯具需要相当多的工作,这取决于你的灯具的格式。

+1

与以下相同。我们已经这样做了。不知道是否加载了灯具,但看到加载失败时产生的错误。 – philgo20 2011-06-17 11:21:23

1

如果在加载夹具时重复的主键产生错误,许多现有的测试将被打破。有时夹具需要包含该错误,因此可以对其进行测试。

您可以编写通用的测试,以检查你所提到的问题:

  • 如果您的夹具加载失败,任何查询依赖于该夹具将失败。编写一个测试,试图检索在固定装置(例如,YourObject.objects.get(pk=1)YourObject.objects.get(name='My Test Entry')

  • 要测试,如果您有重复的主键,比较YourObject.objects.all().aggregate(Count('id', distinct=True))YourObject.objects.all().aggregate(Count('id'))的对象。如果这些都不是平等的,你有重复的主键。

  • 为了避免错误格式的测试数据中,从验证数据生成它们。使用manage.py dumpdata,并避免手动创建或编辑灯具。

提到的第一个测试将表明,如果你有一条无效的路径。最后的建议删除了格式不正确的问题。


无声故障是loaddata如何工作的结果。它正在寻找fixtures = []列表中几个位置的文件名,并且可能无法在其中任何一个文件中找到文件。为了报告错误,loaddata必须跟踪是否已找到文件,并且需要修补程序。有一个trac ticket for the silent fail,但它已经在“需要设计决定”两年的时间里进行了分类。

您可以选择在Django邮件列表中对此有所了解,并在Django的开发副本中使用the unapproved patch

+0

当我认为可能存在问题时,这些就是我所做的一切,但并未指出错误本身。对于多个模型和固定装置,您需要检查线条和线条以验证所有内容是否已正确加载。 – philgo20 2011-06-17 11:20:18

+0

您只是检查灯具的第一个项目以确认它已加载。如果在运行测试时使用最高级别(-v 2),您还可以查看它是否未加载,但是您也会看到大量其他输出。我建议使用dumpdata,这样可以避免首先出现错误。检查每个条目的荒谬方法是我猜想的另一种选择。 – 2011-06-17 13:51:04

+0

只是为了澄清我的立场,我不认为人类应该永远需要编辑序列化的数据。这对个人来说很残酷,并导致像你担心的那样的错误。只需用dumpdata制作它,并像对待垃圾桶一样对待它。 – 2011-06-17 13:56:57

相关问题