Pyunit源码笔记之八 testcase执行后的结果处理

来源:互联网 发布:淘宝最晚多久确认收货 编辑:程序博客网 时间:2024/06/08 06:06

接上文,执行完测试用例,该保存结果了,

记录skipped的case,用self._addSkip(result, test, reason)

self.doCleanups()            for test, reason in outcome.skipped:                self._addSkip(result, test, reason)            self._feedErrorsToResult(result, outcome.errors)            if outcome.success:                if expecting_failure:                    if outcome.expectedFailure:                        self._addExpectedFailure(result, outcome.expectedFailure)                    else:                        self._addUnexpectedSuccess(result)                else:                    result.addSuccess(self)            return result        finally:            result.stopTest(self)            if orig_result is None:                stopTestRun = getattr(result, 'stopTestRun', None)                if stopTestRun is not None:                    stopTestRun()            # explicitly break reference cycles:            # outcome.errors -> frame -> outcome -> outcome.errors            # outcome.expectedFailure -> frame -> outcome -> outcome.expectedFailure            outcome.errors.clear()            outcome.expectedFailure = None            # clear the outcome, no more needed            self._outcome = None

写错误信息到result中,self._feedErrorsToResult(result, outcome.errors)

    def _feedErrorsToResult(self, result, errors):        for test, exc_info in errors:            if isinstance(test, _SubTest):                result.addSubTest(test.test_case, test, exc_info)            elif exc_info is not None:                if issubclass(exc_info[0], self.failureException):                    result.addFailure(test, exc_info)                else:                    result.addError(test, exc_info)
调用result.py中的

    @failfast    def addError(self, test, err):        """Called when an error has occurred. 'err' is a tuple of values as        returned by sys.exc_info().        """        self.errors.append((test, self._exc_info_to_string(err, test)))        self._mirrorOutput = True    @failfast    def addFailure(self, test, err):        """Called when an error has occurred. 'err' is a tuple of values as        returned by sys.exc_info()."""        self.failures.append((test, self._exc_info_to_string(err, test)))        self._mirrorOutput = True

记录expectedFailure的case

记录pass的case,result.addSuccess(self)

后面stopTest(self),stopTestRun(),

最后清理outcome:

            outcome.errors.clear()            outcome.expectedFailure = None            # clear the outcome, no more needed            self._outcome = None

阅读全文
1 0
原创粉丝点击