Meine Idee wäre, mehrere zu übergeben, um JSONResponse zu testen, um Tests erstellen und meine APIs testen zu können
Code: Select all
JSONResponse(status_code=500, content={"Erro": result})
JSONResponse(status_code=422, content={"Erro": result})
JSONResponse(status_code=404, content={"Erro": result})
Ich sehe, dass ich JSONResponse im Code gestapelt habe. Aber es sollte versucht werden herauszufinden, wo das Rückgabeproblem lag.
Code: Select all
@application.post("/division")
def calculator_division(item_to_calculator: Item_to_calculator):
try:
json_item = jsonable_encoder(item_to_calculator)
result = json_item['first_item'] / json_item['second_item']
except Exception as e:
sys.stdout.write(f'Exception: {e}')
return JSONResponse(status_code=500, content={"Error":'Error'})
return JSONResponse(status_code=200, content={"result": result})
services-calculator_api-1 | Exception: float division by zeroINFO: 172.23.0.3:60058 - "POST /division HTTP/1.1" 500 Internal Server Error
services-calculator_api-1 | ERROR: Exception in ASGI application
services-calculator_api-1 | Traceback (most recent call last):
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/uvicorn/protocols/http/httptools_impl.py", line 419, in run_asgi
services-calculator_api-1 | result = await app( # type: ignore[func-returns-value]
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 78, in __call__
services-calculator_api-1 | return await self.app(scope, receive, send)
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/fastapi/applications.py", line 271, in __call__
services-calculator_api-1 | await super().__call__(scope, receive, send)
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/starlette/applications.py", line 118, in __call__
services-calculator_api-1 | await self.middleware_stack(scope, receive, send)
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/starlette/middleware/errors.py", line 184, in __call__
services-calculator_api-1 | raise exc
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/starlette/middleware/errors.py", line 162, in __call__
services-calculator_api-1 | await self.app(scope, receive, _send)
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
services-calculator_api-1 | raise exc
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
services-calculator_api-1 | await self.app(scope, receive, sender)
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py", line 21, in __call__
services-calculator_api-1 | raise e
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
services-calculator_api-1 | await self.app(scope, receive, send)
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 706, in __call__
services-calculator_api-1 | await route.handle(scope, receive, send)
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 276, in handle
services-calculator_api-1 | await self.app(scope, receive, send)
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 66, in app
services-calculator_api-1 | response = await func(request)
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/fastapi/routing.py", line 237, in app
services-calculator_api-1 | raw_response = await run_endpoint_function(
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/fastapi/routing.py", line 165, in run_endpoint_function
services-calculator_api-1 | return await run_in_threadpool(dependant.call, **values)
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/starlette/concurrency.py", line 41, in run_in_threadpool
services-calculator_api-1 | return await anyio.to_thread.run_sync(func, *args)
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/anyio/to_thread.py", line 31, in run_sync
services-calculator_api-1 | return await get_asynclib().run_sync_in_worker_thread(
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/anyio/_backends/_asyncio.py", line 937, in run_sync_in_worker_thread
services-calculator_api-1 | return await future
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/anyio/_backends/_asyncio.py", line 867, in run
services-calculator_api-1 | result = context.run(func, *args)
services-calculator_api-1 | File "/apis/./app/main.py", line 58, in calculator_division
services-calculator_api-1 | return JSONResponse(status_code=200, content={"result": result})
services-calculator_api-1 | UnboundLocalError: local variable 'result' referenced before assignment
< /code>
Ich möchte eine andere Möglichkeit wissen, mehrere verschiedene Status_code -Antworten zu übergeben, damit ich die Endpunktaufrufe testen kann. Weil die Ausnahme nicht sehr gut funktioniert. Vielen Dank für Ihre Aufmerksamkeit. Gute nachts. Weil die Ausnahme nicht sehr gut funktioniert. Vielen Dank für Ihre Aufmerksamkeit. Gute Nacht.