2012-03-12 9 views
11

Djangoでオブジェクトからすべてのタグを削除するビューをテストしています。そのために、私はこのアサーションを使用します:Djangoで空のクエリーセットをテストするにはどうすればよいですか?

self.assertEqual(list(Tag.objects.get_for_object(Animal.objects.get(pk=1))),[]) 

私は返信として空のリストを得るので、それはうまくいきます。私はこれを回避するために、リストにDjangoのクエリセットを包ん:

AssertionError: [] != [] 
空Djangoのクエリセットが空のリストと比較され

しかし、これは私がたくさん好きではないので、私はそのテストを行う上でより良い方法があるのだろうかと思った。

答えて

23

だけ使用exists

self.assertFalse(Tag.objects.get_for_object(Animal.objects.get(pk=1)).exists()) 
7
self.assertEqual(Tag.objects.get_for_object(Animal.objects.get(pk=1).count(), 0) 

あなたがリストとして評価されているクエリセットを強制したい場合にもlen()を使用することができます!

また、assertQuerysetEqualも便利です。インスタンス0f django.db.models.query.EmptyQuerySetとの比較ができます。しかし、ほとんどの場合、count()を使用するのが最も速い方法です。

関連する問題