Как утверждать равные 2 списка, которые содержат диктанты? - PullRequest
0 голосов
/ 14 февраля 2020

Как утверждать равные 2 списка, которые содержат дикты?

List1 = [{'key1':'value1'}, {'key2':'value2'}, {'key3':'value3'}]
List2 = [{'key1':'value1'}, {'key2':'value2'}, {'key3':'value4'}]

Я прочитал, что assertEqual / assertListEqual требует, чтобы элементы списка были в том же порядке. Где assertCountEqual не учитывает порядок. Это нормально, если элементы списка представляют собой простую строку / значение инициализации.

Однако нет ясности в том, важен ли порядок и для элементов списка? Например, если список содержит элемент dict или tuple, dict неупорядочен, поэтому assertEqual не проверяет порядок dict внутри списка? Как насчет кортежа внутри списка? Где я могу найти, как это работает?

1 Ответ

0 голосов
/ 14 февраля 2020

assertEquals просто делегирует ==, который может быть переопределен каждым типом.

Однако нет ясности в том, важен ли порядок и для элементов списка?

Это потому, что он делегирован самим элементам списка. list.__eq__ просто проверяет, имеют ли оба списка одинаковую длину и имеют ли они одинаковые элементы в одном и том же месте, используя ==. То, как == ведет себя для каждого элемента, является решением элемента.

dict неупорядочен, поэтому assertEqual не проверяет порядок выбора dict внутри списка?

Правильно. равенство dict просто проверяет, что в dicts одинаковые пары (ключ, значение), его не волнует порядок. То же самое для равенства множеств.

А как насчет кортежа внутри списка?

Равенство кортежей такое же, как и равенство списков, оно заботится о порядке.

Где я могу найти, как это работает?

Документация каждого отдельного типа, который я бы угадал.

...