методы в итерациях, вызывающие исключения - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть метод, в котором он вызывает метод из другого класса и вызывает исключение, когда он пытается выполнить набор больше, чем раз. Код выглядит примерно так:

def get_values(value_giver):
    try:
        vals = [i for i in value_giver.get_values()]
        return vals
    except RetriesExhaustedException:
        raise CustomException

для тестового примера, который я пишу, у меня есть safe_patch ed value_giver().get_values(), чтобы вызвать RetriesExhaustedException, например:

safe_patch(self, "path_to_func.get_values",Mock(return_value=RetriesExhaustedException))

, поэтому, когда Я запускаю тестовый пример, получаю

TypeError: 'type' object is not iterable

Как еще можно проверить, что функция вызывает это исключение, и исключение перехватывается ??

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 16 апреля 2020

Вы можете просто создать класс-заглушку для передачи в качестве аргумента:

class ValueGiver():
    def get_values(self):
        raise RetriesExhaustedException

Затем вы можете использовать это в своем тесте:

import pytest

def test_raised():
    with pytest.raises(CustomException):
        get_values(ValueGiver())

или, с unittest:

import unittest

class MyTest(unittest.TestCase):
    def test_raised(self):
        with self.assertRaises(CustomException):
            get_values(ValueGiver())

Вы можете также пропатчить сам объект value_giver, если он известен - трудно сказать без фактического тестового кода.

...