我试图弄清楚如何编写一个断言引发异常的试验测试用例。
目前我有两种简单的测试方法(成功和失败)。每个方法都返回一个 deferred,它已经被 callback'd 或 errback'd。测试成功方法工作正常。在测试失败方法时,我希望能够断言引发了异常(使用 assertRaises)。
但是测试用例失败了,我得到:
twisted.trial.unittest.FailTest:ConnectionRefusedError 未引发(<Deferred at 0x920e28c current result: <twisted.python.failure.Failure <class 'twisted.internet.error.ConnectionRefusedError'>>> 返回)
代码如下:
从 twisted.trial.unittest 导入 TestCase 从 twisted.internet.defer 导入 inlineCallbacks,成功,失败 从 twisted.internet.error 导入 ConnectionRefusedError 我的对象类: def成功(自我): 返回成功(真) def失败(自我): 返回失败(ConnectionRefusedError()) 类TestErrBack(TestCase): 默认设置(自我): self.o = MyObject() @inlineCallbacks def test_success(self): 结果 = 产生 self.o.success() self.assertTrue(结果) @inlineCallbacks def test_failure(self): # 这个测试用例失败了! 产生 self.assertRaises(ConnectionRefusedError, self.o.failure)
我在 test_failure 中使用了正确的方法吗?我可以使用 try...catch 来调用 self.o.failure,但我认为这种方法不如使用 assertRaises 好。