Код Middle Page Object и архитектура обновлено

Слияние данных для билдера

Условие

Билдер тестовых данных берёт словарь значений по умолчанию и переопределения. Напишите deep_merge(defaults, overrides):

  • результат новый словарь, входные не меняются;
  • если значение в обоих словарях само словарь, сливать рекурсивно;
  • иначе значение из overrides заменяет значение по умолчанию (списки заменяются целиком, None тоже записывается);
  • ключи из overrides, которых нет в defaults, добавляются.

Примеры

deep_merge({"name":"Иван","role":"user"}, {"role":"admin"}) // {"name":"Иван","role":"admin"}
deep_merge({"address":{"city":"Москва","zip":"101000"}}, {"address":{"city":"Казань"}}) // {"address":{"city":"Казань","zip":"101000"}}
deep_merge({"tags":["a","b"]}, {"tags":["c"]}) // {"tags":["c"]}

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.

Термины по теме