Pyunit源码笔记之五 开始执行testsuit的run及迭代
来源:互联网 发布:jquery.dialog.js 编辑:程序博客网 时间:2024/06/16 12:57
在runner.py的 def run(self, test):
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.__class__ 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源码笔记之五 开始执行testsuit的run及迭代
- Pyunit源码笔记之六 testcase run的执行前奏
- Pyunit源码笔记之三 创建testsuit/testcase
- Pyunit源码笔记之十一 pyunit运行方式之二:testsuit方式
- Pyunit源码笔记之四 runner中的runTest/run初始化
- Pyunit源码笔记之十一 testCase run之后的 各种result
- Pyunit源码笔记之八 testcase执行后的结果处理
- Pyunit源码笔记之九 testsuite执行后,runner/result的结果输出
- Pyunit源码笔记之七 testcase正式执行,重点重点重点
- Pyunit源码笔记之十 pyunit运行方式之一:直接调用
- Pyunit 源码笔记之十三 扩展html report
- Pyunit源码笔记之二 主函数import,初始化loader和流程概览
- Pyunit源码笔记之一 典型例子,后面将分析源码
- testSuit
- pyunit扩展:集中定义要执行的用例
- 使用testsuit执行测试用例,选择特定用例执行多次的方法(appium+python)
- PyUnit学习笔记
- Junit4 testSuit 的一种写法
- Eclipse---统计代码量
- 《算法导论》第16章 贪心算法 个人笔记
- 实验吧 RE 题解
- Java:合并两个JSONArray
- Mysql 下载与安装问题三:应用程序无法正常启动0xc000007b
- Pyunit源码笔记之五 开始执行testsuit的run及迭代
- 腾讯云部署
- Grails 国际化
- Class.forName()用法详解
- 前端AngularJS的POST请求,后端SpringMVC接收数据的小坑
- Logistic Regression
- 二叉树的中序遍历
- Web.xml配置详解之listener
- Linux 网络编程笔记(3)——进程间通信