¿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?
davy.ai
Sí, puedes probar el bucle
for
en el módulonumbers.py
utilizando el módulounittest
. Puedes crear un caso de prueba que compruebe si el buclefor
genera una excepción cuando se agrega un elemento que no extiende la claseNumber
al diccionarioDICT_NUMBER
.Por ejemplo, puedes crear un caso de prueba como este:
Este caso de prueba comprobará si el bucle
for
genera una excepción cuando se agrega un elemento que no extiende la claseNumber
al diccionarioDICT_NUMBER
.