如何使用内联回调在试用测试用例中使用assertRaises

2024-09-28 05:18:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图找出如何编写一个测试用例来断言异常被引发。在

目前我有两个简单的方法来测试(成功和失败)。每个方法都返回一个已被callback'd或errback'd的deferred。在测试failure方法时,我希望能够断言引发了异常(使用assertRaises)。在

但是测试用例失败了,我得到:

twisted.trial.unittest.FailTest: ConnectionRefusedError not raised (<Deferred at 0x920e28c current result: <twisted.python.failure.Failure <class 'twisted.internet.error.ConnectionRefusedError'>>> returned)

代码如下:

^{pr2}$

我在考试失败时使用正确的方法吗? 我可以使用try…catch绕过self.o.failure的调用,但我认为这种方法不如使用assertRaises好。在


Tags: 方法failurecallbacktwistednot测试用例断言unittest
1条回答
网友
1楼 · 发布于 2024-09-28 05:18:34

使用TestCase.assertFailure代替:

yield self.assertFailure(self.o.failure(), ConnectionRefusedError)

从Twisted 12.3开始,还有一个TestCase.failureResultOf助手:

^{2}$

从13.1开始,这个API接受一个额外的参数并为您执行类型检查:

self.failureResultOf(self.o.failure(), ConnectionRefusedError)

这对于您知道Deferred已经触发并返回结果的测试非常有用。如果Deferred在调用时没有失败结果,failureResultOf将引发测试失败异常,而不是返回失败。在

对于您的示例代码,这将很好地工作,并且应该适用于大多数单元测试。如果您正在使用trial编写函数或集成测试,其中有实际的异步工作正在进行,并且您不知道Deferred何时会触发,那么您需要坚持使用第一个API assertFailure。在

相关问题 更多 >

    热门问题