es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo importar un módulo dos veces para propósitos de prueba?

Actualmente tengo un módulo que cuando es importado se ejecuta un bucle for:

numbers.py

DICT_NUMBER = {
    'one': One,
    'two': Two,
    'three': Three,
    'four': Four,
    'five': Five,
}

for num in DICT_NUMBER.values():
    if not issubclass(num, Number):
        raise Exception(f'{num} no extiende Number')

El problema es que no sé cómo probarlo, he intentado hacer el siguiente código:
python
from numbers.py import DICT_NUMBER # el for se ejecuta sin lanzar Exception

DICT_NUMBER['A'] = A # 'A' no extiende Number

with self.assertRaises(Exception):
   from numbers.py import DICT_NUMBER

Esto no funciona porque DICT_NUMBER se convierte en una referencia no resuelta.

¿Hay alguna forma de hacerlo?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes probar el bucle for en el módulo numbers.py utilizando el módulo unittest. Puedes crear un caso de prueba que compruebe si el bucle for genera una excepción cuando se agrega un elemento que no extiende la clase Number al diccionario DICT_NUMBER.

    Por ejemplo, puedes crear un caso de prueba como este:

    import unittest
    from numbers.py import DICT_NUMBER
    
    class TestNumber(unittest.TestCase):
        def test<em>for</em>loop(self):
            DICT<em>NUMBER['A'] = A
            with self.assertRaises(Exception):
                for num in DICT</em>NUMBER.values():
                    if not issubclass(num, Number):
                        raise Exception(f'{num} no extiende la clase Number')
    

    Este caso de prueba comprobará si el bucle for genera una excepción cuando se agrega un elemento que no extiende la clase Number al diccionario DICT_NUMBER.

Comments are closed.