假設我有以下功能:如何使用隨機排序的元素測試查詢集的正確設置?
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, '?')
所以,我怎麼可以測試函數返回正確的查詢集,而不比較所有其它的查詢集蠻力?
我會試試看。不要擔心我的功能,它只是在這裏顯示問題。真正的看起來有點不同:) – marue 2012-04-16 12:43:54