在twisted.trial中如何测试是否在超时内没有调用回调?

时间:2013-11-06 19:41:07

标签: twisted

我在扭曲中实现pubsub模式。 并且想知道如何在试验中测试pub只触发正确的潜艇,而不是其他潜水艇。

我可以测试是否调用了正确的潜艇:

def test_pubsub(self):
  d1 = defer.Deferred()
  d2 = defer.Deferred()
  self.bus.sub("/foo", lambda ev: d1.callback(ev))
  self.bus.sub("/foo/bar", lambda ev: d2.callback(ev))
  self.bus.pub("/foo/bar", {})
  return defer.gatherResults([d1, d2])
test_pubsub.timeout = 2    

现在我想测试一下

self.bus.sub("/foo/bar/baz", callback_will_not_be_called)

UPD。我提出的唯一想法是:

self.bus.sub('/foo/bar/baz', lambda ev: d4.callback(ev))
d4.addCallback(lambda e: self.fail("should not happen"))
reactor.callLater(1.9, lambda: d4.cancel())
self.assertFailure(d4, defer.CancelledError)

1 个答案:

答案 0 :(得分:1)

您不应该使用“真实”反应器进行此测试。试用版中的“超时”功能并非旨在对您的测试行为进行断言,而是允许挂起或错误的测试退出,以便套件的其余部分可以继续。相反,请遵循testing scheduling of timed calls within Twisted的文档化指南。