def METHOD_NAME(request: SubRequest) -> Iterator[SupersetApp]:
    """
    A fixture that generates a Superset app.
    """
    METHOD_NAME = SupersetApp(__name__)
    METHOD_NAME.config.from_object("superset.config")
    METHOD_NAME.config["SQLALCHEMY_DATABASE_URI"] = (
        os.environ.get("SUPERSET__SQLALCHEMY_DATABASE_URI") or "sqlite://"
    )
    METHOD_NAME.config["WTF_CSRF_ENABLED"] = False
    METHOD_NAME.config["PREVENT_UNSAFE_DB_CONNECTIONS"] = False
    METHOD_NAME.config["TESTING"] = True
    # loop over extra configs passed in by tests
    if request and hasattr(request, "param"):
        for key, val in request.param.items():
            METHOD_NAME.config[key] = val
    # ``superset.extensions.appbuilder`` is a singleton, and won't rebuild the
    # routes when this fixture is called multiple times; we need to clear the
    # registered views to ensure the initialization can happen more than once.
    appbuilder.baseviews = []
    app_initializer = SupersetAppInitializer(METHOD_NAME)
    app_initializer.init_app()
    # reload base views to ensure error handlers are applied to the app
    with METHOD_NAME.app_context():
        import superset.views.base
        importlib.reload(superset.views.base)
    yield METHOD_NAME