unittest 基础之 —— TestResult
来源:互联网 发布:华为网络交换机价格 编辑:程序博客网 时间:2024/06/07 08:05
testresult
就是存储测试结果的,不过通过何种方式调用run函数,最终到Testcase
中的run方法时
必须传一个result(如果为None
则自己实例化一个TestResult
对象)。这个result
就是TestResult
对象或者是其子类的对象,我们每次执行的结果都会调用其addFailure
,addSuccess
,addSkip
….
等方法将执行结果保存到TestResult
实例属性中。我们还是来看看TestCase
的run方法:
def run(self, result=None): orig_result = result if result is None:#如果没有传入result对象自己实例化一个TestResult对象 result = self.defaultTestResult() startTestRun = getattr(result, 'startTestRun', None) if startTestRun is not None: startTestRun() self._resultForDoCleanups = result result.startTest(self) testMethod = getattr(self, self._testMethodName) if (getattr(self.__class__, "__unittest_skip__", False) or getattr(testMethod, "__unittest_skip__", False)): # If the class or method was skipped. try: skip_why = (getattr(self.__class__, '__unittest_skip_why__', '') or getattr(testMethod, '__unittest_skip_why__', '')) self._addSkip(result, skip_why)#调用addSkip finally: result.stopTest(self) return try: success = False try: self.setUp() except SkipTest as e: self._addSkip(result, str(e)) except KeyboardInterrupt: raise except: result.addError(self, sys.exc_info())#调用addError else: try: testMethod() except KeyboardInterrupt: raise except self.failureException: result.addFailure(self, sys.exc_info())#调用addFailure except _ExpectedFailure as e: addExpectedFailure = getattr(result, 'addExpectedFailure', None) if addExpectedFailure is not None: addExpectedFailure(self, e.exc_info)#调用addExpectedFailure else: warnings.warn("TestResult has no addExpectedFailure method, reporting as passes", RuntimeWarning) result.addSuccess(self)#调用addSuccess except _UnexpectedSuccess: addUnexpectedSuccess = getattr(result, 'addUnexpectedSuccess', None) if addUnexpectedSuccess is not None: addUnexpectedSuccess(self) else: warnings.warn("TestResult has no addUnexpectedSuccess method, reporting as failures", RuntimeWarning) result.addFailure(self, sys.exc_info()) except SkipTest as e: self._addSkip(result, str(e)) except: result.addError(self, sys.exc_info()) else: success = True try: self.tearDown() except KeyboardInterrupt: raise except: result.addError(self, sys.exc_info()) success = False cleanUpSuccess = self.doCleanups() success = success and cleanUpSuccess if success: result.addSuccess(self) finally: result.stopTest(self) if orig_result is None: stopTestRun = getattr(result, 'stopTestRun', None) if stopTestRun is not None: stopTestRun()
阅读全文
0 0
- unittest 基础之 —— TestResult
- unittest 基础之 —— TestCase
- unittest 基础之 —— TestSuite
- Python 的单元测试框架Unittest之一(TestResult类分析)
- python测试之unittest
- python测试之unittest
- 自动化测试之unittest
- Python 之unittest框架
- Python之unittest
- python笔记之unittest
- python单元测试之unittest
- Python单元测试——深入理解unittest
- Python单元测试——深入理解unittest
- python测试——doctest和unittest
- Python单元测试——深入理解unittest
- Python单元测试——深入理解unittest
- Python单元测试——深入理解unittest
- Python单元测试——深入理解unittest
- 67. Add Binary
- 关于phpcms V9的调用栏目图片的调用方法
- Linux/Android——input系统之 kernel层 与 frameworks层交互 (五)
- 【数据库】使用Collection.setAutoCommit(false)的注意事项
- android入门
- unittest 基础之 —— TestResult
- 工厂模式
- Unity优化大全(二)之CPU-Physics
- ajax跨域访问——JSONP
- [李景山php] ddos 攻击之 SYN Flood
- servlet请求转发与重定向及乱码问题
- Linux 之 shell 比较运算符
- Linux/Android——Input系统之frameworks层InputManagerService (六)
- 抽象工厂模式