51Testing软件测试论坛

标题: 【转】Selenium2 Python 自动化测试实战学习笔记 (叄) [打印本页]

作者: frances720    时间: 2016-4-26 10:33
标题: 【转】Selenium2 Python 自动化测试实战学习笔记 (叄)
3.5  模组

3.5.1 引用模块

在Python语言中通过from..import..的方式引用模块,下面引用time模块。

XX.PY

Import time

Print time.ctime()


如果只用到time模块下面的ctime()方法,可以这样使用:

Xx.py

From time import ctime

Print ctime()


一次性把time模块下面的所有方法都引进来:

Xx.py

#coding=utf-8

From time import *

Print ctime()

Print “休息一两秒”

Sleep(2)

Python 所安装的模块存放在C:\Python27\Lib\site-packages\目录下面

3.5.2 模块调用

我们可以自己创建一个模块,然后通过另一个程序调用。

创建一个目录(project),在目录下面创建一个文件(pub.py),在文件中创建一个函数。

Project\pub.py

Def add(a,b):

            Print a+b

在相同的目录下面创建一个文件(count.py)

Project\count.py

Import pub

Printpub.add(3,5)

这样就实现了跨文件的函数调用。



**知识延伸:

在project目录下面多了一个pub.pyc文件,pyc文件是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行。



3.5.3 跨目录模块调用

调用文件和被调用的文件不在同一目录下面,调用目录如下:

----project/model/pub.py

----project/count.py

Ps:删除刚才调用生成的pub.pyc文件。再来执行count.py,python会给出提示信息,找不到pub模块。那么python是如何找到模块的呢?

首先要知道,python在执行import语句时,到底进行了什么操作,按python的文档,它执行如下操作:

第一步,创建一个新的,空的module对象(它可能包含多个module)

第二步,把这个module对象插入sys.module中

第三步,装载module的代码(如果需要,首先必须编译)

第四步,执行新的module中对应的代码

在执行第三步时,首先要找到,module程序所在的位置,搜索顺序是:

当前路径(以及从当前目录指定的sys.path),然后是pythonPATH,然后是python的安装设置相关的默认路径。正因为这样的顺序,如果当前路径或pythoPATH中存在与标准module同样module,则会覆盖标准module。也就是说,如果当前目录下存在XML.py,那么执行import XML时,导入的是当前目录下的module,而不是系统标准的XML。

我们可以先构建一个package,以普通的方式导入,就可以直接访问此package中各个module了。在python中的package必须包含一个__init__.PY的文件.


现在我们就可以将..project/model/目录添加到系统环境变量下的path下面,但是这样不够灵活,我们可以调用python的sys模块来实现。

Project\count.py

Import sys

Sys.path.append(‘\model’)

From model import pub

Print pub.add(3,5)

调用sys模块,把model目录通过append()方法追加到系统环境变量path下面。Append()是一个非常有用的方法,它通常用于向一个数据或集合尾部添加新数据。

PS:”\model”是一个相对路径,如果pub.py在别的目录下面,就需要用绝对路径了,如:append(“D:\\project\\model”)

现在运行程序依然会告诉我们找不到model,我们还需要在model目录下面创建一个__init__.PY的文件,内容可以为空。这个文件告诉python model是一个可以被调用的模块。现在就可以正常运行了。

那么我们可以在__init__.PY的文件目录下面放点什么呢?例如在model目录下面有两三个文件(a.py、b.py、c.py),那么打开__init__.PY的文件:

Import a,b

Project\count.py

Import sys

Sys.path.append(‘model’)

From model import *

Print pub.add(2,3)

现在我们用星号(*)表示导入model 下面所有文件,这个所有具体包含什么由__init__.py 决定,因为只import 了a 和b 了.







欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2