mar*_*rue 13 django unit-testing
我正在测试Django中的一个视图,该视图应该从对象中删除所有标记.为此,我使用这个断言:
self.assertEqual(list(Tag.objects.get_for_object(Animal.objects.get(pk=1))),[])
Run Code Online (Sandbox Code Playgroud)
这很有效,因为我得到一个空列表作为回报.我将Django查询集包装在列表中以避免这种情况:
AssertionError: [] != []
Run Code Online (Sandbox Code Playgroud)
将空Django查询集与空列表进行比较.
但由于这不是我喜欢的东西,我想知道是否有更好的方法来进行测试.
Chr*_*att 32
只是用 exists
self.assertFalse(Tag.objects.get_for_object(Animal.objects.get(pk=1)).exists())
Run Code Online (Sandbox Code Playgroud)
self.assertEqual(Tag.objects.get_for_object(Animal.objects.get(pk=1).count(), 0)
Run Code Online (Sandbox Code Playgroud)
len()
如果要强制执行作为列表计算的查询集,也可以使用!
或者也assertQuerysetEqual
很有用,您可以与实例0f进行比较django.db.models.query.EmptyQuerySet
!但count()
在大多数情况下使用应该是最快的方法!
归档时间: |
|
查看次数: |
8075 次 |
最近记录: |