[Twisted-Python] testing my application

Jp Calderone exarkun at divmod.com
Thu Oct 20 07:30:49 MDT 2005


On Thu, 20 Oct 2005 15:19:15 +0200, Marcin Kasperski <marcin.kasperski at softax.com.pl> wrote:
>Dnia czwartek, 20 października 2005 13:16, Stefano Canepa
>napisał:
>> Hi all,
>> 	I am looking for a simple way to write test cases for my
>> project. What is the right way to be as standard as possible?
>> I know the application works becouse I developed a client and
>> the server speaking the same protocol and used lots of print
>> to have output and a sniffer to see network trafic but I
>> understand this is not the right way.
>>
>
>Hmm, I have the similar problem. I have been using python
>unittest to test my application components but recently I
>started to write classess which return deferreds and I am not
>sure how to test them.
>
>First I tried to use standard unittest and install callbacks
>which call self.fail or self.succeed - but it seems that the
>errors are just ignored.
>
>Then I found on this list note about deferredResult and tried
>using it (keeping normal unittest) but seems the application
>just hangs here (for the simple reason I guess, no reactor is
>running)
>
>Then I found about twisted.trial.unittest. But when I replaced
>import unittest with from twisted.trial import unittest, I found
>that there is no 'main' function in this module.
>
>What should I do? Go back to normal unittest but start some
>reactor before unittest.main() ?
>
>Does there anywhere exist any complete ***standalone*** test
>example (run for itself instead of being run within whole
>twisted test framework)?
>

exarkun at boson:~$ cat > test_foo.py
from twisted.trial import unittest

from twisted.internet import defer

def myTestableFunction(x):
    return defer.succeed(x)

def myBrokenFunction(y):
    return defer.fail(ZeroDivisionError("Math is hard"))

def MyUnitTests(unittest.TestCase):
    def testTestable(self):
        return myTestableFunction(10).addCallback(self.assertEquals, 10)
    def testBroken(self):
        return self.assertFailure(myBrokenFunction("foo"), ZeroDivisionError)
exarkun at boson:~$ trial test_foo.py 
Running 2 tests.
  test_foo
    MyUnitTests
      testBroken ...                          [OK]
      testTestable ...                        [OK]

--------------------------------------------------
Ran 2 tests in 0.033s

PASSED (successes=2)
exarkun at boson:~$ 

Hope this helps,

Jp




More information about the Twisted-Python mailing list