У меня есть класс с .upload
методом. Этот метод упакован с использованием декоратора:
@retry(tries=3)
def upload(self, xml_file: BytesIO):
self.client.upload(self._compress(xml_file))
Мне нужно проверить, запускается ли он 3 раза, если возникает какое-то исключение. Мой тест выглядит так:
@mock.patch("api.exporter.jumbo_uploader.JumboZipUploader.upload")
def test_upload_xml_fail(self, mock_upload):
"""Check if decorator called the compress function 3 times"""
generator = BrandBankXMLGenerator()
file = generator.generate()
uploader = JumboZipUploader()
uploader.upload = retry(mock_upload)
mock_upload.side_effect = Exception("Any exception")
uploader.upload(file)
self.assertEqual(mock_upload.call_count, 3)
Я прочитал, что стандартное поведение декораторов python предполагает, что функция внутри теста будет развернута, и мне нужно обернуть ее вручную.
Я сделал этот трюк, но код завершился ошибкой с AssertionError: 0! = 3.
Итак, как правильно здесь обернуть декорированный метод правильно?