初探python的__init__.py

来源:互联网 发布:eval在js中的作用 编辑:程序博客网 时间:2024/04/29 23:41
在自动化用例组织过程中,我们总会遇到这样的问题,文件太多,太过杂乱,不好管理,每次挑选用例需要花费很长时间找到要执行的用例,不方便管理等等……
        事实在python中,有一个包的概念,即package,那么怎么才算一个package呢?这就是今天的主角:__init__.py了。
        如下图所示的目录结构:
        
图片

        主调文件在最外层的iwebshop中,而二级目录有两个,即common和smoke.如果我们删除了__init__.py,那么这个只能是两个目录而已。但加入了这个__init__.py,这两个文件夹目录就成为了两个包,包下可以包含多个文件。
        下面来看看这玩意儿有啥用。
        我们知道在python中使用包需要用import导入,那么__init__.py的重要作用之一就是:使这个目录被当作包来导入。如上图,如果我想要使用testcase_LoginAndLogout.py内的方法的时候,我们只需要import smoke.testcase_LoginAndLogout即可。当然这种情况是说__init__.py文件就是个空文件,啥也没有的时候。
        还有一个重要作用就如下图所示: 
图片 
        在__init__.py文件里把当前包下所有文件内的方法用一个列表赋值给一个变量:__all__
        然后你就可以愉快的使用from smoke.testcase_LoginAndLogout import *了。
        综上所述,事实上我们在import一个模块的时候,导入的是其__init__.py文件,由此,我们甚至可以把这个包下面用到的所有的包放到这个列表里,比如如果我们用到了time模块,那么我们就在列表中加一个元素‘time’,那么这个时候,我们在其他文件内要调用这个包的时候,需要用到time的时候,相当于已经导入过了time,而不用重复写import time,这样就在结构化编程的同时附带使代码更简洁了。
        应用:自动化用例结构化管理。我们可以把属性类似的用例打在一个包内,使之更加集中,管理方便,调用也更加方便。
0 0
原创粉丝点击