Проверка большой таблицы с помощью RobotFramework и Selenium2Library


(Александр Шиповалов) #1

Здравствуйте коллеги, продолжаю в своей конторе борьбу за отказ от FitNesse и переход на Robot Framework, одним из ключевых моментов здесь - является следующий. В приложении есть очень нетипичный use-case - а именно предпросмотр в браузере, некоего отчета. Этот отчет таблица, размеры ее могут быть довольно таки велики, около 70 колонок и несколько сотен строк. Важно, экспорт в xls, csv, xml - есть и он является отдельным функционалом. То есть протестировать надо именно отображение в браузере. В Robot Framework, есть довольно таки удобные команды:

Table Cell Should Contain
Table Column Should Contain
Table Row Should Contain

К сожалению, они не могут принимать на вход больше 3-4 значений, а мне ставят условие, что таблица должна в тест-кейса отображаться как есть, что бы простым Ctrl+C и Ctrl+V, можно было перенести таблицу из Exel в Robot-a.
В связи с этим вопрос, сталкивался ли кто нибудь с тестированием таких таблиц и если да то, что можно применить?


(Dmitriy Zverev) #2

Здравствуйте.
У меня есть опыт работы с данными кейвордами. Могу сказать, что с размерами "около 70 колонок и несколько сотен строк" кейворды будут работать очень долго (поиск занимает больше времени, чем сам тест). В этом случае мне было проще написать regexp. Да, я терял в поддержке теста, но выйграл в скорости.
Если Вам надо проверить правильность данных в таблице, то я бы использовал функциональность экспорта в csv\xml и проверка стала бы проще и быстрее. Если же необходимо проверить вёрстку (колонки не съехали, шапка таблицы такого-то цвета и пр.), то я бы обратился к опыту тестирований вёрсток, либо оставил бы это на ручную проверку.
Вот это предложение я, честно говоря, не понял: "что бы простым Ctrl+C и Ctrl+V, можно было перенести таблицу из Exel в Robot-a". Куда в "роботе" Вы хотите перенести таблицу.
Если данный тест уже написан на FitNesse, то расскажите, пожалуйста, как это проверяется там.


(Александр Шиповалов) #3

В FitNesse, проверяется следующим образом - тест-дизайнер, рисует эту таблицу в wiki-разметке. Я пишу класс, который расширяет так называемую RowFixture. Соответственно класс - возвращает массив объектов. Поля объектов это наименования колонок. Количество строк - соответственно количество объектов. Итого FitNesse - на вход принимает объекты, у которых поля заполнены текстом из ячеек. И да этот тест в FitNesse, уже находил баги.

Если Вам надо проверить правильность данных в таблице, то я бы использовал функциональность экспорта в csv\xml и проверка стала бы проще и быстрее.

У меня есть функциональность экспорта в файлы - она проверяется. Но заказчик, хочет именно функциональность отображения таблицы в браузере.


(Dmitriy Zverev) #4

Соответственно, Вы можете написать такой же класс как кейворд, пробегаться по массиву, вызывая "Table Cell Should Contain". Однако, думаю, это будет занимать очень много времени.


(Александр Шиповалов) #5

Да я подумал об этом, но такой keyword, не будет универсальным. А если колонок 1, а если строк 2.


(rmerkushin) #6

Могу посоветовать расширить Selenium2Library кейвордом, который будет получать текст из ячеек таблицы и засовывать их в список. Далее нужно подготовить заранее правильный список и всего лишь сравнить эти два списка. В библиотеке Collections для этого есть спец. кейворд. Может и не супер вариант, но хотя бы что-то )


(Александр Таранков) #7

А проверять необходимо содержимое всей таблицы целиком? Или можно ограничиться проверкой определенных ячеек/строк/столбцов?


(Александр Шиповалов) #8

Тест-дизайне, считает, что да и тут я с ним согласен - проще пять раз проверить всю таблицу - с разными входными условиями, чем 100 раз, селективно. Покрытие больше, а при выборочной проверке практически не реально охватить все наборы входных фильтров и данных


(Александр Таранков) #9

Мне кажется помещать огромную таблицу в тело теста не правильно - тест должен быть наглядным.

Я бы вынес таблицу в отдельный файл. Не знаю правда есть ли в robot framework удобные средства для этого


(Александр Шиповалов) #10

Я думаю, можно попробовать разбить например по строкам, строка будет содержать не больше 70 ячеек - и каждую строку запихать в List


(rmerkushin) #11

Парси csv файл. строка - это список, а значение это элемент списка. В итоге csv файл будет представдять из себя список списков. А дальше сравнить это с таблицей не должно быть проблемой ) к тому же csv делается в Excel как ты и хотел


(Александр Шиповалов) #12

@rmerkushin, не совсем - я буду отдельными тестами делать, экспорт в xls, csv, txt. Но это именно отдельные тесты, которые будут проверять другое требование заказчика.