Pyunit源码笔记之二 主函数import,初始化loader和流程概览
来源:互联网 发布:淘宝虚拟网店怎么优化 编辑:程序博客网 时间:2024/06/14 11:16
初步分析执行流程:
关于这个,有篇博客写得挺好:
python unittest源码解析一----测试用例是如何被执行http://blog.csdn.net/nitibu/article/details/48161339
从unittest.main()开始,在unittest.main.py中, 执行TestProgram(), 也就是执行其构造函数 __init__(self,....
class TestProgram(object): ...... ...... def __init__(self, module='__main__'....main = TestProgram
在__init__(...)里,通过self.module = __import__(module)动态地加载当前的module,
def __init__(self, module='__main__', defaultTest=None, argv=None, testRunner=None, testLoader=loader.defaultTestLoader, exit=True, verbosity=1, failfast=None, catchbreak=None, buffer=None, warnings=None, *, tb_locals=False): if isinstance(module, str): self.module = __import__(module) for part in module.split('.')[1:]: self.module = getattr(self.module, part) else: self.module = module也就是用例文件的目录module,print (self.module) 和print (dir(self.module)):
<module '__main__' from 'D:\\hy\\ws\\Prj_jd\\pkg_jd\\utamy.py'>['MyClassA', 'MyTest', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'unittest']
在__init__下面还有3个重要的:
def __init__(self.......... ............ ............ self.defaultTest = defaultTest self.testRunner = testRunner self.testLoader = testLoader self.progName = os.path.basename(argv[0]) self.parseArgs(argv) self.runTests()
defaultTest这里是None,后面会讲到,
testLoader使用默认参数loader.defaultTestLoader,初始化loader在loader.py中:
class TestLoader(object): """ This class is responsible for loading tests according to various criteria and returning them wrapped in a TestSuite """ testMethodPrefix = 'test' sortTestMethodsUsing = staticmethod(util.three_way_cmp) suiteClass = suite.TestSuite _top_level_dir = None def __init__(self):parseArgs 找测试用例suite,case,
runTest是执行测试用例
阅读全文
1 0
- Pyunit源码笔记之二 主函数import,初始化loader和流程概览
- Pyunit源码笔记之四 runner中的runTest/run初始化
- Pyunit源码笔记之十一 pyunit运行方式之二:testsuit方式
- Pyunit源码笔记之十 pyunit运行方式之一:直接调用
- Pyunit源码笔记之三 创建testsuit/testcase
- Pyunit源码笔记之六 testcase run的执行前奏
- Pyunit 源码笔记之十三 扩展html report
- jpcsp源码解读之二:main函数与jpcsp的初始化流程
- tomcat6源码分析二(初始化和启动流程)
- tomcat6源码分析二(初始化和启动流程)
- Pyunit源码笔记之五 开始执行testsuit的run及迭代
- Pyunit源码笔记之七 testcase正式执行,重点重点重点
- Pyunit源码笔记之八 testcase执行后的结果处理
- Pyunit源码笔记之九 testsuite执行后,runner/result的结果输出
- Pyunit源码笔记之十一 testCase run之后的 各种result
- spring源码学习笔记-初始化(一)-概览
- spring源码学习笔记-初始化(一)-概览
- spring源码学习笔记-初始化(一)-概览
- Linux安装MySQL的两种方法 先卸载之前版本
- 搜索-H
- 关于NoSQL与SQL的区别
- 浅谈GAN生成对抗网络
- 基于物理的渲染—基于球面调和基的实时全局光照明
- Pyunit源码笔记之二 主函数import,初始化loader和流程概览
- Android Linux usb gadget configfs
- 无向带权图的邻接矩阵表示法
- spring的事物管理
- objc_setAssociatedObject的简单使用
- 图解myeclipse把maven普通java项目变成web项目的全程操作
- PID控制算法的c语言实现十一 模糊PID的参数整定
- 单例
- Spring注解@Autowired、@Qualifier