[Twisted-Python] Re: Using twisted.trial with nose unittest system

glyph at divmod.com glyph at divmod.com
Wed Feb 7 16:24:18 EST 2007


On 05:36 pm, antoine.pitrou at wengo.com wrote:

>> More serious than the process-running issue, from my point of view, is
>> the fact that if you forget the "@deferred" decorator on a test that
>> uses any reactor API, or code that internally _uses_ any reactor API,
>> you will put your tests into a non-deterministic state, and although
>> they'll pass _most_ of the time, they will die depending on the load
>> characteristics of your machine at the time and (insert long-winded
>> rant about the evil things threads do to your code here).  Tests are
>> exactly the place you never want this to happen :).
>
>That's certainly right, although you should get messages about uncaught
>exceptions or unhandled errbacks, so you'll know that something went
>wrong.

That's not the sort of problem I'm talking about.  Some reactor APIs will appear to work when called from the wrong thread, so if you forget a @deferred somewhere, your test might seem to work, or hang in a weird place, or produce different error output each time.

>What happens with Trial when you forget to return the Deferred the test
>should wait on?

Trial doesn't require tests to return Deferreds.  If there is no Deferred, the test completes immediately.

>> All in all it seems like it would be simpler to just use trials'
>> TestCase class with nose.  Is there any reason not to?
>
>Given that Trial is a self-contained tool, and given that nose also has
>its own test running and collecting, I simply didn't expect this to work
>or to keep working accross versions of both tools.

This is definitely a concern, but your current approach doesn't seem any less fragile.

>> Trial doesn't force your code to make use of Twisted, and as Mr. Lange
>> has declared previously, it goes to some lengths to be compatible with
>> stdlib unit tests.
>
>Of course, but to use Trial you must install Twisted don't you ?

>Which is quite a big dependency,

Is 2 megabytes really too big?

>and Twisted does not yet support being easy_install'ed.

... and nose doesn't yet support being apt-get installed ;-)

If you'd like to see easy_install support for Twisted, please feel free to contribute support for it; the release manager could probably use some help maintaining setup.py in general.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://twistedmatrix.com/pipermail/twisted-python/attachments/20070207/ba79f1f1/attachment.htm 


More information about the Twisted-Python mailing list