def _runFixturesAndTest(self, result):
        """
        Run C{setUp}, a test method, test cleanups, and C{tearDown}.

        @param result: The TestResult instance to which to report results.
        """
        suppress = self._getSuppress()
        try:
            if self._run(suppress, None, self.setUp, result):
                return

            todo = self.getTodo()
            method = getattr(self, self._testMethodName)
            failed = self._run(suppress, todo, method, result)
        finally:
            self._runCleanups(result)

        if todo and not failed:
            result.addUnexpectedSuccess(self, todo)

        if self._run(suppress, None, self.tearDown, result):
            failed = True

        for error in self._observer.getErrors():
            result.addError(self, error)
            failed = True
        self._observer.flushErrors()
        self._removeObserver()

        if not (failed or todo):
            result.addSuccess(self)

        Run C{setUp}, a test method, test cleanups, and C{tearDown}.

        @param result: The TestResult instance to which to report results.
        
stackoverflow/venv/lib/python3.6/site-packages/twisted/trial/_synctest.py