我试图弄清楚如何编写一个试用测试用例来声明异常。如何在试用测试用例中使用assertRaises使用inlineCallbacks
目前我有2个简单的方法来测试(成功和失败)。每种方法都会返回一个已经被callback或者errback的延迟。测试成功方法正常工作。当测试失败方法时,我希望能够断言引发了异常(使用assertRaises)。
然而测试用例失败,我得到:
twisted.trial.unittest.FailTest: ConnectionRefusedError not raised (<Deferred at 0x920e28c current result: <twisted.python.failure.Failure <class 'twisted.internet.error.ConnectionRefusedError'>>> returned)
的代码如下:
from twisted.trial.unittest import TestCase from twisted.internet.defer import inlineCallbacks, succeed, fail from twisted.internet.error import ConnectionRefusedError class MyObject: def success(self): return succeed(True) def failure(self): return fail(ConnectionRefusedError()) class TestErrBack(TestCase): def setUp(self): self.o = MyObject() @inlineCallbacks def test_success(self): result = yield self.o.success() self.assertTrue(result) @inlineCallbacks def test_failure(self): # this test case is failing ! yield self.assertRaises(ConnectionRefusedError, self.o.failure)
我使用在test_failure正确的方法? 我可以使用try ...捕捉self.o.failure的调用,但我认为这种方法不如使用assertRaises好。
谢谢,这就是我一直在寻找的! – 2012-03-23 21:29:59