Я пытаюсь выяснить, как написать пробный тест, в котором утверждается, что возникло исключение.
В настоящее время у меня есть 2 простых метода тестирования (успех и неудача). Каждый метод возвращает отложенный метод, который уже был callback'd или errback'd. Тестирование метода успеха работает нормально. При тестировании метода сбоя я ожидаю, что смогу утверждать, что возникла исключительная ситуация (используя 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.