पर लागू किया गया है, मुझे पता है कि, पर एक शब्दकोश पर, assertDictEqual
कहा जाता है। इसी प्रकार, अनुक्रम पर assertEqual
assertSequenceEqual
प्रदर्शन करेगा।assertDictEqual के साथ assertDequEqual को प्राप्त करने के लिए मूल्य
हालांकि, जब assertDictEqual
मानों की तुलना की है, यह assertEqual
का उपयोग करना नहीं दिखाई देता है, और इस तरह assertSequenceEqual
नहीं बुलाया जाता है।
lst1 = [1, 2]
lst2 = [2, 1]
d1 = {'key': lst1}
d2 = {'key': lst2}
self.assertEqual(lst1, lst2) # True
self.assertEqual(d1, d2) # False ><
मैं ऐसे d1
और d2
ऐसी है कि उनकी समानता ठीक से तुलना की जाती है के रूप में शब्दकोशों कैसे परीक्षण कर सकते हैं, रिकर्सिवली मूल्यों के assertEqual
की तरह अर्थ विज्ञान लगाने से:
सरल निम्नलिखित शब्दकोशों पर विचार करें?
मैं बाहरी मॉड्यूल का उपयोग करना चाहता हूं (जैसा कि in this question सुझाया गया है) यदि संभव हो तो, जब तक कि वे देशी django एक्सटेंशन न हों।
संपादित
अनिवार्य रूप से, मैं क्या कर रहा हूँ के बाद एक इस के संस्करण में बनाया गया है:
def assertDictEqualUnorderedValues(self, d1, d2):
for k,v1 in d1.iteritems():
if k not in d2:
self.fail('Key %s missing in %s'%(k, d2))
v2 = d2[k]
if isinstance(v1, Collections.iterable) and not isinstance(v1, basestring):
self.assertValuesEqual(v1, v2)
else:
self.assertEqual(v1, v2)
ऊपर कोड के साथ समस्या यह है कि त्रुटि संदेश के रूप में के रूप में अच्छा नहीं कर रहे हैं बिल्टिन आवेषण, और शायद किनारे के मामलों को मैंने अनदेखा कर दिया है (जैसा कि मैंने अभी लिखा है कि मेरे सिर के ऊपर से)।
'unittest' मॉड्यूल के साथ, 'self.assertEqual (lst1, lst2)' सत्य नहीं है -> 'AssertionError: सूचियां अलग-अलग हैं: [1, 2]! = [2, 1]'। – martineau
@ मार्टिनौ - मेरी गलती; मैं प्रलेखन के उस हिस्से को गलत तरीके से पढ़ता हूं। मैं 'assertSequemsEqual' – sapi
की बजाय 'assertItemsEqual' के बराबर की तलाश में हूं, ठीक है, अगर आप' lst1' और 'lst2' बनाते हैं तो पहले' assertEqual' सफल होता है, तो दूसरा भी होगा। – martineau