0、总结就要总结的到位,虽然总结过,有输入,要就要有输出,你瞧不起我,我要告诉你,我就是牛,先看下基础理论
当你import的时候,python解释器只会在sys.path这个变量(一个list,你可以print出来看)里面的路径中找可能匹配的package或module
>>> import sys
>>> print sys.path
而一个package跟一个普通文件夹的区别在于,package的文件夹中多了一个__init__.py文件。换句话说,如果你在某个文件夹中添加了一个__init__.py文件,则python就认为这个文件夹是一个python中的package。(大写的牛x)
__init__.py文件的内容可以是空的(package里面必备这个模块,.py的文件就是模块,这个知识点要知道),它只是告诉python当前文件夹是一个python中的package。当然,你可以在这个module里面添加一些代码,这些代码会在import这个package的时候运行,也就是package下__init__.py模块,会在import package后,立刻会从无缩进的地方开始执行代码嘛
所以,请确保你要import的py文件所在的目录有__init__.py文件(除非它在sys.path中某个文件夹下)
1 、导入一个package,在python世界中,package里面会有一个或多个module
import unittest
2、导入package中的某一个模块,case是unittest包下的一个模块
from unittest import case
3、导入package中的某一个模块的一个属性,TestCase是unittest包下的case模块下的一个class
from unittest import TestCase
3-1、导入package中某一个module的一个属性(这次是函数),removeResult是unittest包下的signals.py模块的一个函数
from unittest import removeResult
4、导入package中,__init__.py文件中的指定的内容,我们继续往下看,在每个package下,一定会有一个__init__.py文件
第一个作用:表示当前目录为python的package
第二个作用:模块下当然可以写代码,其中比如__all__ ,一个全局变量,是一个list,里面指定要导入的module、funcation
图示中是unittest包下的__init__.py文件的__all__全局变量
__all__ = ['TestResult', 'TestCase', 'TestSuite',
'TextTestRunner', 'TestLoader', 'FunctionTestCase', 'main',
'defaultTestLoader', 'SkipTest', 'skip', 'skipIf', 'skipUnless',
'expectedFailure', 'TextTestResult', 'installHandler',
'registerResult', 'removeResult', 'removeHandler']
from unittest import * #其中*代表的就是__all__中的内容
5、包的子包下的class
from PageObject.Home.FirstOpenPage import FirstOpenPage
从PageObject包下的Home包下的FirstOpenPage模块下导入一个FirstOpenPage的类