How can you test that two dictionaries are equal with pytest in python How can you test that two dictionaries are equal with pytest in python python-3.x python-3.x

How can you test that two dictionaries are equal with pytest in python


Don't spend your time writing this logic yourself. Just use the functions provided by the default testing library unittest

from unittest import TestCaseTestCase().assertDictEqual(expected_dict, actual_dict)


I guess a simple assert equality test should be okay:

>>> d1 = {n: chr(n+65) for n in range(10)}>>> d2 = {n: chr(n+65) for n in range(10)}>>> d1 == d2True>>> l1 = [1, 2, 3]>>> l2 = [1, 2, 3]>>> d2[10] = l2>>> d1[10] = l1>>> d1 == d2True>>> class Example:    stub_prop = None>>> e1 = Example()>>> e2 = Example()>>> e2.stub_prop = 10>>> e1.stub_prop = 'a'>>> d1[11] = e1>>> d2[11] = e2>>> d1 == d2False


General purpose way is to:

import json# Make sure you sort any lists in the dictionary before dumping to a stringdictA_str = json.dumps(dictA, sort_keys=True)dictB_str = json.dumps(dictB, sort_keys=True)assert dictA_str == dictB_str