[Twisted-Python] Testing with trial, adbapi questions
Jean-Paul Calderone
exarkun at divmod.com
Mon Jun 25 12:49:00 EDT 2007
On Mon, 25 Jun 2007 12:28:23 -0400, Christian Simms <christian.simms at gmail.com> wrote:
> [snip]
>
>I think you have a race condition because (I assume)
>self.p.lineReceivedindirectly did a database insert, and then the
>self.check did a database select. If that's true, you should make your test
>use Deferred's like this:
>
> d = defer.succeed(None)
> d.addCallback(lambda out: self.p.lineReceived('{%s:"PG"}\0' %
>sserverson.base10toN(104))
> d.addCallback(lambda out: self.check("test\0"))
> return d
>
>You could also write this code using the new defer.inlineCallbacks (needs
>python 2.5) or the older defer.deferredGenerator, but you might as well get
>used to using callbacks/errbacks and Deferred's.
>
Note that the above requires lineReceived to return a Deferred which only
fires after the insert has completed and check to return a Deferred which
represents the result of the select (if those are indeed the underlying
operations).
Jean-Paul
More information about the Twisted-Python
mailing list