суббота, 9 февраля 2013 г.

фреймворки для python

Как видите, существует богатый набор способов для сохранения информации о программе, не меняя ни единой строчки в исходниках. Далее я попытаюсь продемонстрировать в самых общих чертах как пользоваться этим богатством на примерах, заодно и станет понятнее. Несомненно в рамках одной статьи не возможно охватить все целиком и за кадром останется бОльшая часть фреймворка. А примеры вынужденно сделаны сильно упрощенными и короткими. Но я надеюсь, вам удастся получить хотя бы общее представление о возможностях TextTest и возможно заинтересоваться им.

Такие обертки существуют для: PyGTK/Tkinter/wxPython/SWT/Eclipse RCP/GEF/Swing, причем список вполне реально расширить самостоятельно для других библиотек.

Если совсем упрощенно выглядит это так: запускаем программу, кликаем на кнопке, что вызывает изменение какого-то виджета и выходим. При воспроизведении теста StoryText запускает программу, сам нажимает ту же кнопку и проверяет, что виджет изменился таким же образом, как и при записи теста.

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

При помощи CaptureMock можно автоматически сгенерировать обертки для отдельных функций и даже модулей, в том числе и для стандартных библиотек python. Ну, к примеру, можно попросить логировать math.fabs, тогда любое обращение к этой функции (входные и выходные значения) будут писаться в лог.

Можно указать TextTest какие файлы сгенерировала программа в процессе работы (например, логи).

TextTest умеет при запуске программы сохранять ее stdout, stderr в файлы.

Итак, какие существуют способы формирования таких файлов с информацией о работе программы:

После внесения изменений в ваше приложение, тест снова запускается и сравнивается новый получившийся набор файлов с исходными. Если все совпало тест считается пройденным. Не совпало смотрим изменения, если они корректны, помечаем новые файлы как «golden copy». Все просто.

Фреймворк помогает вашему приложению тем или иным образом записать обычный текстовый файл, в котором отражены все важные действия, которые сделала программа. Запуская тест в первый раз, вы проверяете что вывод программы верен и помечаете этот набор выходных файлов как правильный «golden copy».

Как видим, проект зрелый, ему стукнуло почти 10 лет и тем не менее он продолжает активно развиваться. Автор утверждает, что пишет его полный рабочий день и судя по активности на launchpad в несколько десятков коммитов в месяц, я склонен ему верить. Помимо него в проекте на постоянной основе участвует еще один человек. В статье я попытаюсь хотя бы в общих чертах рассказать, что же им удалось создать за эти 10 лет.

Исходные коды можно найти тут: тут же расположен bug-tracker

Сайт с документацией:

Первый коммит: 04/02/2003

Старое название: PyUseCase

Текущее название: TextTest +дополнительные модули StoryText и CaptureMock

Итак, с чего все начиналось: мне понадобился кроссплатформенная библиотека для тестирования GUI на Tkinter (стандартный модуль python для написания GUI) с теоретически возможным переходом в последствии на другой фреймворк. Покопавшись в google, я уж было совсем отчаялся найти нечто подходящее. Но встретил упоминание о TextTest, который умел не только тестировать логику работы интерфейса на Tkinter, но и еще предоставлял возможность работы с кучей других графических GUI-библиотек. Да еще и содержал такое кол-во разных других вкусностей, что я сходу в него влюбился. Итак, приступим.

Предлагаю поговорить сегодня о замечательном фреймворке для тестирования TextTest. Это кроссплатформенный инструмент для функционального тестирования с «record-replay» парадигмой. Как следует из названия TextTest пропагандирует довольно необычный на сегодняшний день подход текст-ориентированного тестирования, который позволяет легко и просто писать и читать тесты. Помимо TextTest мы поговорим о StoryText являющимся строго говоря отдельном инструменте для тестирования GUI, но совместно с TextTest он позволяет делать это гораздо приятнее. Так же упомянем о третьем модуле от автора CaptureMock.

TextTest кроссплатформенный фреймворк на python для тестирования GUI и не только. Часть 1

TextTest кроссплатформенный фреймворк на python для тестирования GUI и не только. Часть 1 / Хабрахабр

Комментариев нет:

Отправить комментарий