code: def mpl_test_settings(request):
      from matplotlib.testing.decorators import _cleanup_cm
  
      with _cleanup_cm():
          backend = None
          backend_marker = request.node.get_closest_marker("backend")
          prev_backend = matplotlib.get_backend()
          if backend_marker is not None:
              assert (
                  len(backend_marker.args) == 1
              ), "Marker 'backend' must specify 1 backend."
              (backend,) = backend_marker.args
              skip_on_importerror = backend_marker.kwargs.get(
                  "skip_on_importerror", False
              )
  
              # special case Qt backend importing to avoid conflicts
              if backend.lower().startswith("qt5"):
                  if any(
                      sys.modules.get(k) for k in ("PyQt4", "PySide")
                  ):
                      pytest.skip("Qt4 binding already imported")
  
          matplotlib.testing.setup()
          with _api.suppress_matplotlib_deprecation_warning():
              if backend is not None:
                  # This import must come after setup() so it doesn't load the
                  # default backend prematurely.
                  import matplotlib.pyplot as plt
  
                  try:
                      plt.switch_backend(backend)
                  except ImportError as exc:
                      # Should only occur for the cairo backend tests, if neither
                      # pycairo nor cairocffi are installed.
                      if (
                          "cairo" in backend.lower()
                          or skip_on_importerror
                      ):
                          pytest.skip(
                              "Failed to switch to backend "
                              f"{backend} ({exc})."
                          )
                      else:
                          raise
              # Default of cleanup and image_comparison too.
              matplotlib.style.use(["classic", "_classic_test_patch"])
          try:
              yield
          finally:
              if backend is not None:
                  plt.close("all")
                  matplotlib.use(prev_backend)
  
file_path: matplotlib/lib/matplotlib/testing/conftest.py
imports: import pytest
  import sys
  import matplotlib
  from matplotlib import _api
label_desc: Use image node_id 3 for calling a global function with example usage: mpl_test_settings(request) without return types