は、私は次の関数があるとします。この関数は、戻り値としてランダムに注文したクエリセットを持っています:どのようにランダムに順序付けられた要素を持つクエリーセットの正しいセットアップをテストできますか?
queryset = User._default_manager.all().order_by('?')
今その機能についての唯一の重要なことがある
def select_queryset(value_to_decide_upon):
""" this function returns either any of some querysets or nothing """
if value_to_decide_upon == 1:
return User._default_manager.all()
elif value_to_decide_upon == 2:
return User._default_manager.filter(pk__in=[some_more_values])
elif value_to_decide_upon == n-1:
return User._default_manager.all().order_by('?')
elif value_to_decide_upon == n:
return None
が今ここに質問です正しいクエリーセットを返す必要があります。私ができるような方法でクエリーセットにアクセスする方法がありますか?このような何か:関数は、他のすべてのクエリセットと比較ブルートフォースせず、正しいクエリセットを返す場合
class TestQuerysetSelection(TestCase):
def test_return_value(self):
# this, of course, will always fail:
self.assertEqual(select_queryset(n-1),
User._default_manager.all().order_by('?'))
# and this is not working as well
self.assertEqual(templatetag.queryset.order_by, '?')
を、どのように私はテストすることができますか?
私はそれを試みます。私の機能について心配しないで、問題を示すのはここだけです。実際のものはかなり違って見える:) – marue