На входе в систему у нас плоская запись — физик со всеми его атрибутами (телефоны, адреса...). На выходе — объект. Между ними некая трансформация. Соответственно, в коде есть маппирование p2o (plain to object) — какие поля объекта в каком поле плоской записи хранятся.
Если надо выполнить трансформацию в автотестах, мы указываем там конкретное поле по его названию. Например, ${p2o_name}. К этому мы, кстати, тоже не сразу пришли, пройдя через #жизньболь, но об этом я рассказывала раньше.
Итак, если надо проверить логику одного поля, все легко и просто. Но полей то в заказчиках много. И при создании новой сборки добавляется базовый комплект тестов, в том числе и на трансформацию. А это значит, что нам надо проверить, что каждое значение поля ложится ровно туда, куда ему надо. И что для каждого поля срабатывают конкретные правила.
Значит, имеем код:
<!-- Дата актуальности -->
<entry key="actualityDate" value="4"/>
<!-- ФИО -->
<entry key="fullNameRawSource" value="5"/>
<entry key="surname" value="6"/>
<entry key="name" value="7"/>
<entry key="patronymic" value="8"/>
<entry key="gender" value="9"/>
<entry key="genderRawSource" value="10"/>
<entry key="fullNameQC" value="11"/>
...
И надо на его основе сделать тесты. Фактически надо забрать значение key и переложить в запись ${p2o_key}, сделав верхнюю строчку заголовков в тесте:
И хотя похожие тесты уже есть, наборы полей у заказчиков разные. Обычно можно взять готовый тест и подменить буквально пять значений. Это можно сделать и ручками. Но если полей много, получается невесело.
Здесь нам поможет автоматизация в блокноте. Я расскажу, как решала эту проблему. Итак, вставляем текст в блокнот и поехали!
Тут все просто. Включаем регэкспы и заменяем:
<!--.*-->
↓
на пустоту
И вуаля, комментов как не бывало!
А то раздражают ツ
Используем регэксп с жадным квантификатором
^\s*(.*)$
↓
\1
Вуаля, пробелы исчезли!
Надо из key="actualityDate" сделать ${p2o_actualityDate}
При этом не захватить value="4"
Value можно отсечь на жадном квантификаторе:
^.*key=\"(.*)\"\svalue.*$
↓
${p2o_\1}
Или использовать ленивый:
^.*key=\"(.*?)\".*$
↓
${p2o_\1}
Оба варианта работают!
Осталось самое простое. Переключаемся на расширенный режим с регэкспов и подменяем
\r\n → ,
Осталось только добавить на новую строку любое значение, например, «1», скопировать и вставить в эксельку с тестом!
Вторую строку мы добавляем, чтобы эксель сам распознал колонки, иначе он просто запихает нашу строку в одну ячейку.
Повторюсь без картинок, просто напоминалкой себе:
1. Регэксп
<!--.*-->
↓
на пустоту
Убрали комментарии
2. Убираем пробелы. Тоже регэксп, с жадным квантификатором
^\s*(.*)$
↓
\1
3. Надо из key="actualityDate" сделать ${p2o_actualityDate}
При этом не захватить value="4"
value можно отсечь на жадном квантификаторе
^.*key=\"(.*)\"\svalue.*$
↓
${p2o_\1}
Или использовать ленивый
^.*key=\"(.*?)\".*$
Оба варианта работают!
4. \r\n → ,
Ну вот и все, не так уж и сложно!
См также:
Автоматизация в блокноте. Изменился порядок записей в тесте, меняем регэкспами
PS — Это выдержка из моей книги для начинающих тестировщиков.
Если надо выполнить трансформацию в автотестах, мы указываем там конкретное поле по его названию. Например, ${p2o_name}. К этому мы, кстати, тоже не сразу пришли, пройдя через #жизньболь, но об этом я рассказывала раньше.
Итак, если надо проверить логику одного поля, все легко и просто. Но полей то в заказчиках много. И при создании новой сборки добавляется базовый комплект тестов, в том числе и на трансформацию. А это значит, что нам надо проверить, что каждое значение поля ложится ровно туда, куда ему надо. И что для каждого поля срабатывают конкретные правила.
Условие
Значит, имеем код:
<!-- Дата актуальности -->
<entry key="actualityDate" value="4"/>
<!-- ФИО -->
<entry key="fullNameRawSource" value="5"/>
<entry key="surname" value="6"/>
<entry key="name" value="7"/>
<entry key="patronymic" value="8"/>
<entry key="gender" value="9"/>
<entry key="genderRawSource" value="10"/>
<entry key="fullNameQC" value="11"/>
...
И надо на его основе сделать тесты. Фактически надо забрать значение key и переложить в запись ${p2o_key}, сделав верхнюю строчку заголовков в тесте:
Есть код, надо на его основе создать автотест |
И хотя похожие тесты уже есть, наборы полей у заказчиков разные. Обычно можно взять готовый тест и подменить буквально пять значений. Это можно сделать и ручками. Но если полей много, получается невесело.
Радость и веселье |
1. Удалить комментарии
Тут все просто. Включаем регэкспы и заменяем:
<!--.*-->
↓
на пустоту
Сначала уберем комментарии |
И вуаля, комментов как не бывало!
Комментариев нет! Едем дальше |
2. Убрать пробелы
А то раздражают ツ
Используем регэксп с жадным квантификатором
^\s*(.*)$
↓
\1
Вуаля, пробелы исчезли!
Избавились от лишних пробелов |
3. Из key="actualityDate" сделать ${p2o_actualityDate}
Надо из key="actualityDate" сделать ${p2o_actualityDate}
При этом не захватить value="4"
Value можно отсечь на жадном квантификаторе:
^.*key=\"(.*)\"\svalue.*$
↓
${p2o_\1}
Или использовать ленивый:
^.*key=\"(.*?)\".*$
↓
${p2o_\1}
Оба варианта работают!
4. Из столбца сделать строку
Осталось самое простое. Переключаемся на расширенный режим с регэкспов и подменяем
\r\n → ,
Осталось только добавить на новую строку любое значение, например, «1», скопировать и вставить в эксельку с тестом!
Вторую строку мы добавляем, чтобы эксель сам распознал колонки, иначе он просто запихает нашу строку в одну ячейку.
Алгоритм кратко
Повторюсь без картинок, просто напоминалкой себе:
1. Регэксп
<!--.*-->
↓
на пустоту
Убрали комментарии
2. Убираем пробелы. Тоже регэксп, с жадным квантификатором
^\s*(.*)$
↓
\1
3. Надо из key="actualityDate" сделать ${p2o_actualityDate}
При этом не захватить value="4"
value можно отсечь на жадном квантификаторе
^.*key=\"(.*)\"\svalue.*$
↓
${p2o_\1}
Или использовать ленивый
^.*key=\"(.*?)\".*$
Оба варианта работают!
4. \r\n → ,
Ну вот и все, не так уж и сложно!
См также:
Автоматизация в блокноте. Изменился порядок записей в тесте, меняем регэкспами
PS — Это выдержка из моей книги для начинающих тестировщиков.
Ольга.
ОтветитьУдалитьSublime и знание хоткеев решают, а Notepad - нет ;)
В замедленной съемке:
https://www.screencast.com/t/9U1U21UCI
Флешплеер это фи)))
УдалитьПотом мб посмотрю, где он у меня установлен.
А почему блокнот не решает то? Очень решает, без установки доп программ дает быстрый результат)
Поддерживаю! :)
УдалитьПользуюсь Notepad++ на работе примерно так же, только под свои нужды.
Каждому свой инструмент!) Главное, чтобы было лично Вам удобно.))
А почему блокнот не решает то?
ОтветитьУдалитьЭто как разница между bash и powershell. Можно решать задачи, но совсем не то...
Возможно) Но, имхо, начинать проще в блокнота
Удалить