Skip to content

Application

AppUnit includes an application class AppUnit which is base class of ASGI or CLI application.

from starlette.middleware.base import RequestResponseEndpoint
from starlette.requests import Request

from appunit.applications import AppUnit

app = AppUnit(debug=True)


@app.on_startup()
def startup():
    print("Starting application ...")


@app.middleware()
async def simple_middleware(request: Request, call_next: RequestResponseEndpoint):
    print("Hello middleware!")
    return await call_next(request)


@app.get("/")
def index():
    return {"success": True}


if __name__ == "__main__":
    app.run()

Instantiating the application

class appunit.applications.AppUnit(debug=False, exception_handlers=None, middleware=None, response_class=None, modules=None, auto_bind=False)

Creates an application instance.

Parameters:

  • debug - Boolean indicating if debug tracebacks should be returned on errors.
  • exception_handlers - A dictionary mapping either integer status codes, or exception class types onto callables which handle the exceptions.
  • middleware - A list of middleware (Middleware class or function) to run for every request.
  • response_class - Default response class used in routes. Default is JSONResponse.
  • modules - A list of configuration modules.
  • auto_bind - Whether to automatically bind missing types.