sto eseguendo un test di unità (Pytest) a che invoca una Lambda beffata (con Moto) e si aspetta una risposta. supponiamo che stiamo importando boto3 e abbiamo creato una costante client lambda. ecco la funzione:
def invoke_lambda(): request = {'message': 'Hello World!'} lambda_response = LAMBDA_CLIENT.invoke( FunctionName='hello-world-lambda', InvocationType='RequestResponse', Payload=json.dumps(request) ) response = lambda_response['Payload'].read() print(response) return response
ecco il mio test di unità:
import zipfile import boto3 from moto import mock_lambda CLIENT = boto3.client('lambda', region_name='us-east-1') # Expected response setup and zip file for lambda mock creation def lambda_event(): code = ''' def lambda_handler(event, context): return event ''' zip_output = io.BytesIO() zip_file = zipfile.ZipFile(zip_output, 'w', zipfile.ZIP_DEFLATED) zip_file.writestr('lambda_function.py', code) zip_file.close() zip_output.seek(0) return zip_output.read() # create mocked lambda with zip file def mock_some_lambda(lambda_name, return_event): return CLIENT.create_function( FunctionName=lambda_name, Runtime='python2.7', Role='test-iam-role', Handler='lambda_function.lambda_handler', Code={ 'ZipFile': return_event, }, Publish=True, Timeout=30, MemorySize=128 ) # Test function @mock_lambda def test_invoke_lambda(): mock_some_lambda('hello-world-lambda', lambda_event) response = function_code.invoke_lambda() assert response['message'] == 'Hello World!'
quando si esegue il Pytest, vedo che la risposta Lambda è: B "errore che esegue lambda: (2, 'WaitNamedPipe', 'Il sistema non può trovare il file specificato.')"
tutte le idee su come risolvere questo problema? vedo alcuni problemi che punta a docker da ricerche di Google, ma dalla mia comprensione Moto dovrebbe essere in grado di eseguire questa roba fuori dalla scatola, senza la necessità di eseguire questo in un contenitore. l'aiuto sarebbe grande:)
En title : Using Moto to Mock Lambda Response returns 'b"error running lambda: (2, 'WaitNamedPipe', 'The system cannot find the file specified.')"'
risulta che ho solo bisogno di installare Mobile per Windows e avere Mobile in esecuzione... non vedo più questo problema quindi penso che tutto vada bene. - SAMN appena ora modificare