Код 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"]}
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.