Предположим, у меня есть следующие функции:Как я могу проверить правильную настройку набора запросов со случайно упорядоченными элементами?
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
Теперь вот вопрос: эта функция случайным образом упорядоченный QuerySet в качестве возвращаемого значения:
queryset = User._default_manager.all().order_by('?')
Теперь единственная важная вещь, о том, что функция является : он должен вернуть правильный запрос. Есть ли способ доступа к набору запросов таким образом, что я могу, т.е. сделать что-то вроде этого:
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, '?')
Так как я могу проверить, если функция возвращает правильный QuerySet, без грубой силы по сравнению со всеми другими querysets?
Я попробую. И не беспокойтесь о моей функции, это просто для того, чтобы показать проблему. Настоящий выглядит совсем по-другому :) – marue