def _run_tests(self):
        for i, entry in enumerate(self._tests):
            if self._debug < 2 and not self.check_prerequisites(entry, i):
                continue
            # Add a note to the logfile to delimit test cases there.
            if self.config.flags.VERBOSE:
                self.config.logfile.note("%s: %r" % (timelib.localtimestamp(), entry))
            try:
                rv = entry.run()
            except KeyboardInterrupt:
                if self._nested:
                    raise TestSuiteAbort("Sub-suite aborted by user.")
                else:
                    if self.config.UI.yes_no("Test interrupted. Abort suite?"):
                        self.info("Test suite aborted by user.")
                        break
            except TestSuiteAbort, err:
                self.info("Suite aborted by test %s (%s)." % (entry.test_name, err))
                entry.result = TestResult(constants.INCOMPLETE)
                rv = constants.ABORT
                break
            # This should only happen with an incorrectly written execute() method.
            if rv is None:
                self.report.diagnostic(
                        "warning: test returned None, assuming INCOMPLETE. "
                        "Please fix the %s.execute() method." % (entry.test_name))
                rv = constants.INCOMPLETE
            # check for abort condition and break the loop if so
            if rv == constants.ABORT:
                break
dataset/ETHPy150Open kdart/pycopia/QA/pycopia/QA/core.py/TestSuite._run_tests/original