Как выполнить модульный тест wxPython? - PullRequest
4 голосов
/ 15 июля 2010

Я слышал о модульном тестировании и написал несколько тестов сам, как тесты, но никогда не использовал какие-либо фреймворки для тестирования.Сейчас я пишу графический интерфейс wxPython для некоторых собственных библиотек анализа / визуализации данных.Я читал некоторые очевидные результаты Google, такие как http://wiki.wxpython.org/Unit%20Testing%20with%20wxPython и его ссылку http://pywinauto.openqa.org/, но все еще не уверен, с чего начать.

У кого-нибудь есть опыт или хорошие ссылки для кого-токто-то знает теорию, но никогда не использовал ни одну из платформ и не знает, как она работает с графическими интерфейсами?

Я работаю на машине с Windows, разрабатываю теоретически кроссплатформенное приложение, которое использует NumPy , Matplotlib , пакет MPlot от Newville и wxPython 2.8.11.Python 2.6 с планами на 3.1.Я работаю на группу учёных, поэтому у меня нет внутренней политики тестирования модулей.

Ответы [ 3 ]

1 голос
/ 15 июля 2010

Чтобы выполнить модульное тестирование вашего приложения, не требуя большого количества фиктивных объектов / заглушек, обработчики событий вашего GUI должны в основном делегировать другим вызовам методов, передавая значения из объекта Event в качестве параметров делегированному методу.

В противном случае вы не сможете протестировать ваше приложение, не имитируя объекты wx.

Взгляните на проект PyPubSub для отличного модуля, который поможет с MVC.

1 голос
/ 07 сентября 2010

В одном из моих ранних проектов я действительно тестировал приложение wxPython, используя слой GUI.Таким образом, тесты действительно вращают живой объект wxApp, открывают реальные окна и затем начинают возиться с реальным MainLoop ().Очень скоро я понимаю, что это был неправильный способ сделать тестирование.Мои тесты были выполнены очень медленно и ненадежно.Гораздо лучший способ - отделить GUI и протестировать только «модельный» уровень вашего приложения.Обратите внимание, что вы можете фактически создать модель для логики уровня представления (модель, которая представляет некоторую визуальную часть вашего приложения) и протестировать ее.Но эта модель не должна включать какие-либо "реальные" объекты графического интерфейса (окна, диалоги, виджеты).

1 голос
/ 15 июля 2010

Если вы хотите unit - протестировать ваше приложение, вам не нужно фокусироваться на методах тестирования GUI. Гораздо лучше написать приложение, используя MVC , MVP или другой мета-шаблон, подобный этому. Таким образом, вы разделяете бизнес-логику и уровень представления.

Гораздо важнее покрыть бизнес-уровень тестами, поскольку это ваш код. Уровень представления уже протестирован разработчиками wxWidgets. Чтобы протестировать бизнес-уровень, достаточно просто базовых инструментов, таких как стандартный unittest модуль и, возможно, nose .

Чтобы убедиться, что все приложение работает правильно, вы должны добавить несколько приемочных тестов, которые будут тестировать функциональность от начала до конца. Они будут работать с графическим интерфейсом, но таких тестов будет немного по сравнению с количеством юнит-тестов.

Если вы ограничите себя только приемочными тестами, вы получите низкий охват, хрупкую и очень медленную тестовую базу кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...