[TIP] Functional Testing of Desktop Applications

Michael Foord fuzzyman at voidspace.org.uk
Mon Mar 5 06:43:31 PST 2007

Laura Creighton wrote:
> In a message of Mon, 05 Mar 2007 00:01:35 GMT, Michael Foord writes:
> <snip>
>> This leads us into a bit of a debate about how much to mock out in our 
>> unit tests. The most extreme testing doctrine says that you should mock 
>> out *all* your dependencies when testing a unit - even dependencies 
>> within the same object (if you are testing method 'a' and it contains a 
>> call to function or method 'b' you should mock 'b').
>> When you have a short function that has several dependencies this can 
>> make writing the tests a real chore. It *also* means that you don't 
>> catch errors at a higher level - where you mock you test adequately what 
>> you *think* the wiring between your units is doing, but your mental 
>> model may be just as buggy as your code.
> A different, related problem.  The idea is that your tests stay live
> and you run them all periodically to make sure nothing breaks.  Do
> this properly, and write a thing like pypy (and py.test) and you
> will find that a run of all your tests takes 3-4 hours. :-(  Thus
> the most extreme doctrine above only works on "small-enough" projects.
> Deciding what to do when your project is no longer "small enough" is
> hard.
"Thus the most extreme doctrine above only works on "small-enough" 

I don't understand what you mean: mocking makes your tests faster - not 
slower. Do you mean that having full test coverage is only possible / 
worthwhile on smaller projects ?

Well, our project is a lot smaller than PyPy, but still around 20k 
production lines and growing.

We have 2300 tests (unit and functional), and they take one and a half 
hours to run. Over 2/3 of this time is functional tests.

We are just switching over to say that we only need to run unit tests 
before checking in.

What I'm saying certainly seems to be 'very extreme' for most Pythoneers 
that I've talked to (and those on the list here) - but it really is 
pretty standard XP, and the sort of stuff being explored by the agile 
crowd. I have to say that it works *very* well for us, and provides a 
great environment to develop in.

All the best,


> Laura Creighton

More information about the testing-in-python mailing list