Автор: Тамоя Бекфорд, Жизель Тодд (Tamoya Beckford, Giselle Todd) Оригинал статьи Перевод: Ольга Алифанова
Исследование миграции данных 2017 года показало, что, согласно 61% респондентов, в среднем три или более легаси-систем причастны к какой-либо форме миграции данных. Можно предположить, что огромное количество компаний занимаются миграцией данных. То же исследование выявило, что 69% мигрировавших проектов были успешными – а что насчет оставшегося 31%? Вот в чем вопрос: насколько этот результат зависит от нехватки хороших практик тестирования?
Недостаточное тестирование было по факту указано как одна из причин провала проектов миграции данных. Работа с любой миграцией данных – это опасное дело, подверженное высокому риску. Мы, на основании нашего опыта, решили пролить свет на пять (5) наиболее важных факторов, которые нужно учитывать, проводя эффективное тестирование миграции базы данных – тогда проект будет успешным.
Просьба помочь разобраться с ошибкой кодировки русского текста в Selenium IDE.
Какая была цель:
Автоматизировать обновление проекта .side, загружая в него напрямую актуальные sendKeys из api через python.
Предусловия:
1. В python делается api-запрос, ответом на который служит некий список (несколько сотен разных значений) в формате json .
2. Этот список переделывается в словарь питона.
3. Питон открывает файл проекта .side. Проект представляет из себя множество одинаковых тестов.
4. В команды sendKeys этих тестов питон вставляет по одному значению из списка, полученного через api-запрос.
5. Питон обновляет файл .side.
6. Файл .side обновлен актуальными значениями sendKeys, успех. Тест становится актуальным/валидным
В чём ошибка:
Вместо русских символов в интерфейсе Selenium IDE стоят знаки вопроса (ошибка кодировки) (скрин 1):
Код python, отвечающий за изменение файла .side:
with open("C:\\test.side", "r") as file:
old_version = file.read()
with open("C:\\test.side", "r") as file:
result = json.loads(file.read())
counter = 0
tests = result.get("tests") for test in tests:
commands = test.get("commands") for command in commands: if "sendKeys" in command.values(): if counter >= len(buildings): break
test["name"] = buildings[counter]
command["value"] = buildings[counter]
counter += 1