[Twisted-Python] Running twisted.trial unittests using nose

glyph at divmod.com glyph at divmod.com
Mon Aug 6 09:20:45 EDT 2007

On 12:17 pm, miles.chris at gmail.com wrote:
>I'm simply curious as to whether it is safe for me to rely on a test 
>runner other than "trial" to run the tests?  I assume any magic 
>(knowledge of deferreds) is within the  twisted.trial.unittest.TestCase 
>class and the "trial" command is  simply another tool to discover and 
>pretty print the results.  From  what I've seen, both "nosetests" and 
>"trial" will produce the same  report (although "trial" looks nicer 
>:-).  Or perhaps this wouldn't  be the case if I needed to interact 
>with the reactor?

There is an implicit, undocumented goal that tests written for trial 
should remain usable with other test runners.  Recently, I filed a 
ticket because not even *I* know which test runners or how this is 
supposed to work.  You can follow the discussion / resolution here:


Personally I'd never use nose because, as you say, trial looks nicer :), 
so I can only guess what's going wrong.

The potential problem (currently) with using Twisted's TestCase class 
together with other runners is that the tests do something that no other 
Twisted application does, and which is not _really_ supported by the 
framework: re-start the reactor repeatedly.

Eventually, 'trial' itself will not do this, and will behave as a 
"normal" Twisted application.  'trial' will, as stated by the ticket I 
just linked to, still support other test runners by having a 'run' 
method that starts and shuts down the reactor, but it won't be used 
internally.  The main reason to do this is that there are various tools 
which would be nice to use Twisted functionality in-process with the 
tests for reporting results.  Doing that will probably remain a trial- 
exclusive feature, because other test runners will necessarily need to 
completely shut down the reactor at the end of each test.

More information about the Twisted-Python mailing list