[TIP] Unit and Acceptance testing WxPython
stefano.masini at pragma2000.com
Sun Apr 27 03:40:08 PDT 2008
On Sun, Apr 27, 2008 at 3:14 AM, Nate Lowrie <solodex2151 at gmail.com> wrote:
> I haven't gotten any responses, but I figured it out. I am design the
> GUI as a Humble Dialog. Essentially, it's a MVC architecture in which
> the view is as thin a wrapper is possible, with all of the logic
> implemented in the controller, which is testable. It has been working
> out really well so far. Also, I sort of lied when I said I am using
> WxPython. I am actually using Dabo, which is a Pythonic wrapper over
> WxPython. The reason I mention this is that the Dabo UI syntax
> results in far less code to create the same application. So, I can
> minimize the view code which means less code overall that is untested.
> If there is interest I could write an article and post it to my
I've done wxPython testing in the past, using the Humble Dialog pattern too.
I too was excited in the beginning. What I liked most was the fact
that while coding I was "envisioning" my UI, rather than actually
"visioning" it. I could leave the actual UI "wiring" as the very last
step, when all the logic was written and tested, so when I finally saw
my UI, it was already perfectly functional, with all corner cases
handled, and so forth.
... after a few months I figured that the real meat of my application
was not near the UI, but much closer to the backend. It was far in the
back that I really needed the added robustness of unit testing.
Instead, having the UI so heavily glued to my tests, so artificially
separated into such a thin MVC just for the sake of testability didn't
add so much value to my project. Rather, all those tests written on a
preliminary version of the UI just slowed down the unavoidable
refacing of the app that the customer requested after seeing it.
In the end I decided that unit testing so close to the UI library was
overkill for me, and I preferred to code without unit testing there. I
simply moved the border of unit testing a little closer to the
backend, and left some space for "cowboy coding" right where it was
more likely that the customer asked on a daily basis to change small
stuff here and there. After all bugs where not so frequent.
My 2 cents.
More information about the testing-in-python