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
原创粉丝点击