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