[Zope-CMF] Re: Zope 3 events from workflow

Martin Aspeli optilude at gmx.net
Wed Dec 27 11:15:50 EST 2006


Jens Vagelpohl wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> 
> On 27 Dec 2006, at 16:16, Tres Seaver wrote:
>> Rocky Burt wrote:
>>> On Wed, 2006-27-12 at 11:46 +0100, Jens Vagelpohl wrote:
>>>> P.S.: I _hate hate hate_ doctests ;)
>>>
>>> Why?
>>
>> I won't speak for Jens, but I find they have two serious drawbacks when
>> used as *unit tests* (as opposted to quasi-functional tests with 
>> narrative):
>>
>>   - Tests dont run in isolation from one another (this is why I say
>>     quasi-functional).
>>
>>   - The contortions required to get testable output printed often
>>     obscure the intent of the test itself.
> 
>  From painful experience with the customer work right now, and from the 
> work on the CMF branch to convert tools to utilities I'll add that they 
> make debugging a lot harder (where can I step into and through the test 
> code with pdb as I normally do?) and the fact that they don't just stop 
> executing when an error is encountered like a normal unit test does. 
> They continue, usually spewing miles and miles of text, and it's really 
> annoying to scroll back screen after screen after screen to find the 
> real problem.

I agree with the pdb problem. I tend to use them either to explain 
narratives about how code works, for functional tests with 
zope.testbrowser, and sometimes they just "feel" right for the thing to 
be tested, but I quickly came off using them for everything.

To only see the first test failure (it'll continue to execute 
regardless, because you may have cleanup code that needs to run 
after...) in the output, you can do this, which I always do:

import unittest
import doctest

from some.module import test_module

optionflags = doctest.REPORT_ONLY_FIRST_FAILURE | doctest.ELLIPSIS

def test_suite():
     suite = unittest.TestSuite()
     suite.addTest(doctest.DocTestSuite(test_module, 
optionflags=optionflags))
     return suite



More information about the Zope-CMF mailing list