Pyunit源码笔记之五 开始执行testsuit的run及迭代
2017-06-01 13:01
351 查看
在runner.py的 def run(self, test):
startTestRun()是所有testsuite执行之前的,目前没具体操作内容。
接着执行run(self, result, debug=False),
_isnotsuite(test)判断是否不为 testsuite, 如果是suite,中
for index, test in enumerate(self)第一次,test是testsuite,
<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<__main__.MyTest testMethod=testmul>, <__main__.MyTest testMethod=testsum>]>]>
到下面的test(result)时,递归继续调用这个run(),
提一下:_isnotsuite(test)判断是否不为 testsuite, 如果是suite,就忽略。
for index, test in enumerate(self)第二次,test还是testsuite, 再次递归。
<unittest.suite.TestSuite tests=[<__main__.MyTest testMethod=testmul>, <__main__.MyTest testMethod=testsum>]>
for index, test in enumerate(self)第三次,test就是testcase:、
testmul (__main__.MyTest)
testsum (__main__.MyTest)
startTestRun()是所有testsuite执行之前的,目前没具体操作内容。
def run(self, test): ........ with warnings.catch_warnings(): if self.warnings: ........ ......... startTime = time.time() startTestRun = getattr(result, 'startTestRun', None) if startTestRun is not None: startTestRun() try: test(result) finally: stopTestRun = getattr(result, 'stopTestRun', None) if stopTestRun is not None: stopTestRun() stopTime = time.time()test(result)的 test是testsuit, 执行suite.py中的__call__(self, *args, **kwds)
def __call__(self, *args, **kwds): return self.run(*args, **kwds)
接着执行run(self, result, debug=False),
_isnotsuite(test)判断是否不为 testsuite, 如果是suite,中
def run(self, result, debug=False): topLevel = False if getattr(result, '_testRunEntered', False) is False: result._testRunEntered = topLevel = True for index, test in enumerate(self): if result.shouldStop: break if _isnotsuite(test): self._tearDownPreviousClass(test, result) self._handleModuleFixture(test, result) self._handleClassSetUp(test, result) result._previousTestClass = test.__c 4000 lass__ if (getattr(test.__class__, '_classSetupFailed', False) or getattr(result, '_moduleSetUpFailed', False)): continue if not debug: test(result) else: test.debug() if self._cleanup: self._removeTestAtIndex(index) if topLevel: self._tearDownPreviousClass(None, result) self._handleModuleTearDown(result) result._testRunEntered = False return result
for index, test in enumerate(self)第一次,test是testsuite,
<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<__main__.MyTest testMethod=testmul>, <__main__.MyTest testMethod=testsum>]>]>
到下面的test(result)时,递归继续调用这个run(),
提一下:_isnotsuite(test)判断是否不为 testsuite, 如果是suite,就忽略。
for index, test in enumerate(self)第二次,test还是testsuite, 再次递归。
<unittest.suite.TestSuite tests=[<__main__.MyTest testMethod=testmul>, <__main__.MyTest testMethod=testsum>]>
for index, test in enumerate(self)第三次,test就是testcase:、
testmul (__main__.MyTest)
testsum (__main__.MyTest)
相关文章推荐
- Pyunit源码笔记之六 testcase run的执行前奏
- Pyunit源码笔记之十一 testCase run之后的 各种result
- Pyunit源码笔记之十一 pyunit运行方式之二:testsuit方式
- Pyunit源码笔记之七 testcase正式执行,重点重点重点
- Pyunit源码笔记之九 testsuite执行后,runner/result的结果输出
- Pyunit源码笔记之八 testcase执行后的结果处理
- Hadoop源码学习笔记(1) ——第二季开始——找到Main函数及读一读Configure类
- 【任务笔记】创建windows操作系统下的服务进程,并随操作系统启动自动开始执行
- cocos2d-x 笔记(四) TestCpp源码分析:control
- cocos2d-x 笔记(五) TestCpp源码分析:Actions
- OVM的run.test的执行顺序
- Google test源码阅读(一):基本执行流程
- Google test源码阅读(二):参数化测试执行流程
- nginx 源码学习笔记(十七)—— ngx_worker_process_cycle子进程执行
- Cocos2d-x学习笔记(19)(TestCpp源码分析-3)
- Cocos2d-x学习笔记(20)(TestCpp源码分析-4)
- levelDB源码笔记(1)-TEST
- Google test源码阅读(一):基本执行流程
- 计划开始写redis的源码分析笔记
- 从头开始学cocos2dx笔记之六(TESTCPP之分辨率适配)