Нет активного исключения для ререйза
Краткая предыстория. Я должен выполнить несколько юнит-тестов. Единственная проблема заключается в том, что клиент хочет, чтобы о неудачных тестах сообщалось в виде текстового документа с некоторой дополнительной информацией, которую я могу легко добавить. То, что я сделал до сих пор, это.
Я написал небольшую функцию, которая будет писать вещи в текстовом документе, используя python-docx. Идея заключалась в том, что я поймаю исключение, выданное assertEqual. В блоке catch я вызову свою функцию для записи материала в документ word, а затем снова вызову исключение, чтобы все еще происходило старое поведение неудачного модульного теста.
class MyTestCase(unittest.TestCase):
def test_something(self):
try:
x = 1
y = 2
self.assertEqual(x, y)
except AssertionError:
writeToDocument(x, y, self.id().split('.')[-1], 'These values should be equal')
raise
if __name__ == '__main__':
unittest.main()
По крайней мере, так я и думал. Я думаю, что что-то упустил. Я вижу эту ошибку при запуске теста. Эта ошибка возникает в момент, когда я вызываю исключение после вызова моего метода документации.
RuntimeError: No active exception to reraise
Любые идеи, где я возиться с вещами обработки исключений?
1 ответ
Если он как-то теряет ссылку на ошибку, попробуйте передать ее явно, используя except AssertionError as err
,
class MyTestCase(unittest.TestCase):
def test_something(self):
try:
x = 1
y = 2
self.assertEqual(x, y)
except AssertionError as err:
writeToDocument(x, y, self.id().split('.')[-1], 'These values should be equal')
raise err
if __name__ == '__main__':
unittest.main()