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.

Burlándose de urllib.request.urlopen usando unittest

Estoy tratando de simular esta función urlopen. Obtuvimos un par de soluciones de otras preguntas similares, pero ninguna de ellas parece funcionar.

def lambda_handler(event, context):
   try:
        request = urllib.request.Request(url=URL, data=data, method=method, headers=headers)
        with urllib.request.urlopen(request) as httpResponse:
            # print(httpResponse.read().decode('utf-8'))
            string = httpResponse.read().decode('utf-8')
            response = json.loads(string)
            print(response)
            return response

Enfoque intentado:

class mock_request():
   class Request():
       ....
   def urlopen(*args, **kwargs):
       return {}

@mock.patch(.....urllib.request, mock_request)
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando simular la función urlopen en urllib.request para que devuelva un diccionario vacío, pero el código que proporcionaste está incompleto, por lo que es difícil determinar cuál puede ser el problema. Algunas sugerencias posibles para probar:

    • Asegúrate de que el módulo urllib.request esté importado correctamente al principio del archivo.
    • Verifica que la ruta y los argumentos proporcionados en el decorador @mock.patch sean correctos (por ejemplo, si mock_request está definido en un módulo separado, deberías incluir la ruta completa a ese módulo).
    • Para asegurarte de que la clase mock_request se use como reemplazo de urllib.request, utiliza mock.patch.object(urllib.request, 'urlopen', new=mock_request.urlopen) en lugar de solo @mock.patch.

    Si ninguna de estas soluciones funciona, puede ser útil proporcionar más información sobre el error o la salida que estás viendo.

Comments are closed.