I have a seemingly stupid and simple mistake, but for life I can’t understand why this is not working. In my test, when I compare two dictionaries, I get this error:
Traceback (most recent call last):
File "/path/to_my_app/tests/test_unit.py", line 120, in test_destroy_data
self.assertEqual(obsolete_data, expected_obsolete_data)
AssertionError: {'cou[45 chars]es': {<Category: Test Category>}, 'beers': {<Beer: Test Beer>}} != {'cou[45 chars]es': {<Category: Test Category>}, 'beers': {<Beer: Test Beer>}}
{'beers': {<Beer: Test Beer>},
'categories': {<Category: Test Category>},
'countries': {<Country: Test Country>}}
Django 2.0, Python 3.5
My method:
def destroy_data(self):
"""
Remove entries not in the csv file.
"""
obsolete_data = {
'beers': set(Beer.objects.all()) ^ set(self.beer_list),
'categories': set(Category.objects.all()) ^ set(self.category_list),
'countries': set(Country.objects.all()) ^ set(self.country_list),
}
for data in obsolete_data:
[obj.delete() for obj in obsolete_data[data]]
return obsolete_data
My test:
def test_destroy_data(self):
"""
Remove old entries.
"""
self.importer.import_data(destroy=False)
obsolete_data = self.importer.destroy_data()
expected_obsolete_data = {
'countries': {self.country},
'categories': {self.category},
'beers': {self.beer},
}
self.assertEqual(obsolete_data, expected_obsolete_data)
When I check these two values in my debugger, they are both the same or at least printed in this way. I tried writing keys in unicode, but I get the same error. Why does [45 characters] appear ?
UPDATE
I set maxDiff to None when using self.assertDictEqual and I get all the error output, but the error remains the same:
Traceback (most recent call last):
File "/path/to_my_app/tests/test_unit.py", line 124, in test_destroy_data
self.assertDictEqual(obsolete_data, expected_obsolete_data)
AssertionError: {'cat[35 chars]>}, 'beers': {<Beer: Test Beer>}, 'countries':[22 chars]ry>}} != {'cat[35 chars]>}, 'countries': {<Country: Test Country>}, 'b[22 chars]er>}}
{'beers': {<Beer: Test Beer>},
'categories': {<Category: Test Category>},
'countries': {<Country: Test Country>}}