当django单元测试加载灯具时,有没有办法看到错误?
令人讨厌的是,在运行django单元测试时,丢失文件,重复键或格式错误的灯具文件都不会显示为错误。
答案 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()中定义自己的验证方法。测试你的灯具是否装载很容易,但是,验证你的灯具需要相当多的工作,具体取决于灯具的格式。