Python Language Affirmer des exceptions


Exemple

Vous pouvez tester qu'une fonction émet une exception avec le Unittest intégré via deux méthodes différentes.

Utiliser un gestionnaire de contexte

def division_function(dividend, divisor):
    return dividend / divisor


class MyTestCase(unittest.TestCase):
    def test_using_context_manager(self):
        with self.assertRaises(ZeroDivisionError):
            x = division_function(1, 0)

Cela exécutera le code à l'intérieur du gestionnaire de contexte et, s'il réussit, le test échouera car l'exception n'a pas été déclenchée. Si le code déclenche une exception du type correct, le test continuera.

Vous pouvez également obtenir le contenu de l'exception déclenchée si vous souhaitez exécuter des assertions supplémentaires.

class MyTestCase(unittest.TestCase):
    def test_using_context_manager(self):
        with self.assertRaises(ZeroDivisionError) as ex:
            x = division_function(1, 0)

        self.assertEqual(ex.message, 'integer division or modulo by zero')

En fournissant une fonction appelable

def division_function(dividend, divisor):
    """
    Dividing two numbers.

    :type dividend: int
    :type divisor: int

    :raises: ZeroDivisionError if divisor is zero (0).
    :rtype: int
    """
    return dividend / divisor


class MyTestCase(unittest.TestCase):
    def test_passing_function(self):
        self.assertRaises(ZeroDivisionError, division_function, 1, 0)

L'exception à vérifier doit être le premier paramètre et une fonction appelable doit être transmise en tant que second paramètre. Tous les autres paramètres spécifiés seront transmis directement à la fonction appelée, vous permettant de spécifier les paramètres qui déclenchent l'exception.