假设我有以下功能:
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 = 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, '?' )
那么我如何测试函数是否返回正确的查询集,而不是与所有其他查询集进行比较?