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
- Pyunit源码笔记之八 testcase执行后的结果处理
- Pyunit源码笔记之六 testcase run的执行前奏
- Pyunit源码笔记之九 testsuite执行后,runner/result的结果输出
- Pyunit源码笔记之七 testcase正式执行,重点重点重点
- Pyunit源码笔记之三 创建testsuit/testcase
- Pyunit源码笔记之十一 testCase run之后的 各种result
- Pyunit源码笔记之五 开始执行testsuit的run及迭代
- mybatis源码学习之执行过程分析(5)——sql执行后ResultSet的处理及结果返回
- Pyunit源码笔记之十一 pyunit运行方式之二:testsuit方式
- Pyunit源码笔记之十 pyunit运行方式之一:直接调用
- Pyunit源码笔记之四 runner中的runTest/run初始化
- Pyunit 源码笔记之十三 扩展html report
- Pyunit源码笔记之二 主函数import,初始化loader和流程概览
- Spark修炼之道(高级篇)——Spark源码阅读:第九节 Task执行成功时的结果处理
- Pyunit源码笔记之一 典型例子,后面将分析源码
- pyunit扩展:集中定义要执行的用例
- [spark] Task成功执行的结果处理
- PyUnit学习笔记
- 2017计蒜之道 第四场 商汤科技的行人检测(简单)
- Redis配置文件之————redis.conf配置及说明
- Tomcat优化之内存优化
- spyder crashed during last session
- RN-API
- Pyunit源码笔记之八 testcase执行后的结果处理
- web api 使用
- Android开发规范和架构总结
- 设计模式学习总结之代理模式
- 集合排序--自然排序
- mysql自定义函数篇
- 为tornado框架支持jinja2
- ES6学习笔记- Module的语法
- BZOJ 1975 [Sdoi2010]魔法猪学院 A*+SPFA