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)
davy.ai
Parece que estás intentando simular la función
urlopen
enurllib.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:urllib.request
esté importado correctamente al principio del archivo.@mock.patch
sean correctos (por ejemplo, simock_request
está definido en un módulo separado, deberías incluir la ruta completa a ese módulo).mock_request
se use como reemplazo deurllib.request
, utilizamock.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.