code: def runtest(self) -> None:
      from _pytest.debugging import (
          maybe_wrap_pytest_function_for_tracing,
      )
  
      assert self._testcase is not None
  
      maybe_wrap_pytest_function_for_tracing(self)
  
      # Let the unittest framework handle async functions.
      if is_async_function(self.obj):
          # Type ignored because self acts as the TestResult, but is not actually one.
          self._testcase(result=self)  # type: ignore[arg-type]
      else:
          # When --pdb is given, we want to postpone calling tearDown() otherwise
          # when entering the pdb prompt, tearDown() would have probably cleaned up
          # instance variables, which makes it difficult to debug.
          # Arguably we could always postpone tearDown(), but this changes the moment where the
          # TestCase instance interacts with the results object, so better to only do it
          # when absolutely needed.
          # We need to consider if the test itself is skipped, or the whole class.
          assert isinstance(self.parent, UnitTestCase)
          skipped = _is_skipped(self.obj) or _is_skipped(
              self.parent.obj
          )
          if self.config.getoption("usepdb") and not skipped:
              self._explicit_tearDown = self._testcase.tearDown
              setattr(self._testcase, "tearDown", lambda *args: None)
  
          # We need to update the actual bound method with self.obj, because
          # wrap_pytest_function_for_tracing replaces self.obj by a wrapper.
          setattr(self._testcase, self.name, self.obj)
          try:
              self._testcase(result=self)  # type: ignore[arg-type]
          finally:
              delattr(self._testcase, self.name)
  
imports: import sys
  import traceback
  import types
  from typing import Any
  from typing import Callable
  from typing import Generator
  from typing import Iterable
  from typing import List
  from typing import Optional
  from typing import Tuple
  from typing import Type
  from typing import TYPE_CHECKING
  from typing import Union
  import _pytest._code
  import pytest
  from _pytest.compat import getimfunc
  from _pytest.compat import is_async_function
  from _pytest.config import hookimpl
  from _pytest.fixtures import FixtureRequest
  from _pytest.nodes import Collector
  from _pytest.nodes import Item
  from _pytest.outcomes import exit
  from _pytest.outcomes import fail
  from _pytest.outcomes import skip
  from _pytest.outcomes import xfail
  from _pytest.python import Class
  from _pytest.python import Function
  from _pytest.python import Module
  from _pytest.runner import CallInfo
label_desc: Use image node_id 14 for calling the TestCaseFunction obj's underlying member method code with example usage: obj.runtest() without return types