django单元测试中缺少夹具没有错误

时间:2011-06-09 14:45:14

标签: django unit-testing error-handling fixtures

当django单元测试加载灯具时,有没有办法看到错误?

令人讨厌的是,在运行django单元测试时,丢失文件,重复键或格式错误的灯具文件都不会显示为错误。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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