Simulando un retraso en python unittest para boto3.client y probar el tiempo de espera.
Tengo unas líneas de código aquí:
try:
client = _get_client(region_name, connect_timeout, read_timeout, max_retries)
except Exception as e:
log_exception("no se pudo conectar al cliente de param store de boto3", param_name=param_name, err=e)
return default_value
Y mi método _get_client
es muy simple:
def _get_client(region_name, connect_timeout, read_timeout, max_retries):
config = Config(connect_timeout=connect_timeout,
read_timeout=read_timeout,
retries={'max_attempts': max_retries})
return boto3.client("ssm", region_name=region_name, config=config)
Lo que quiero hacer ahora es probar el connect_timeout
y el read_timeout
en un unittest
de Python. ¿Alguien sabe cómo hacer tal cosa? ¿Cómo puedo simular una latencia para conectarme a un boto3.client
?
davy.ai
Para probar los parámetros
connect_timeout
yread_timeout
en una prueba de unidad de Python, puedes usar el módulounittest.mock
para simular una latencia.Aquí tienes un ejemplo:
En el primer caso de prueba, utilizamos
patch
para simular el métodoboto3.client
y su valor de retorno. Luego llamamos a_get_client
con algunos argumentos y verificamos que se haya llamado aboto3.client
con los argumentos correctos.En el segundo caso de prueba, simulamos un
ConnectionTimeoutError
estableciendo elside_effect
deboto3.client
. Luego llamamos a_get_client
con algunos argumentos y verificamos que devuelvaNone
.En el tercer caso de prueba, simulamos un
ReadTimeoutError
de la misma manera y verificamos que_get_client
devuelvaNone
.Ten en cuenta que deberás importar las excepciones necesarias (
ConnectionTimeoutError
,ReadTimeoutError
) desdebotocore.exceptions
.