Tôi tự hỏi phương thức TestCase.assertQuerysetEqual hoạt động như thế nào. Tôi đã thử nó theo những cách khác nhau, mỗi người trong số họ dẫn tôi đến một thông báo lỗi khác.Django 1.4 - assertQuerysetEqual - cách sử dụng phương pháp
#create a backup of all records in the tree
tree_record_backup = list(Tree.objects.all())
#do some updates on another table, which should not affect the tree table if everything goes wrong
#check if list of tree records did not changed
tree_record_qs = Tree.objects.all()
#Number1:
self.assertQuerysetEqual(tree_record_qs,[repr(tree_record_backup)])
#Number2:
self.assertQuerysetEqual(tree_record_qs,tree_record_backup)
Thông báo lỗi cho Number1:
First list contains 21 additional elements.
First extra element 1:
node.pk: 2 - node: node2 - pk: 2 - level: 0 - ancestor: 2
Thông báo lỗi cho Số 2:
AssertionError: Lists differ: ['<Tree: node.pk: 1 - node: ro... != [<Tree: node.pk: 1 - node: roo...
First differing element 0:
<Tree: node.pk: 1 - node: root - pk: 1 - level: 0 - ancestor: 1>
node.pk: 1 - node: root - pk: 1 - level: 0 - ancestor: 1
Cám ơn gợi ý làm thế nào để sử dụng phương pháp assertQuerysetEqual một cách chính xác.
Cảm ơn bạn đã làm rõ! –
Sử dụng python 3 + django 1.5 bạn nên sử dụng 'map (repr, your_second_queryset)' vì assertQuerysetEqual chuyển đổi queryset thành một danh sách. –