一、模块调用

1.创建一个目录project,并且在目录下面创建两个文件

project/
一 pub.py
L一 count.py
在pub.py文件中创建add函数。

#pub.py

def add(a,b):
return a+b  

 在相同的目录下再创建一个文件count.py,调用pub.py文件中的add()函数

#count.py

from pub import add
print (add(4,5))#输出结果为“9”

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

2.跨目录模块调用

目录结构如下所示

project/

------model/
  L一 pub.py

L一 count. py

#count.py

from model.pub import add
print (add(4, 5))

 在Python 2中将会抛出Impo口Eπor: 找不到名字为model的模块,错误如下图所示, 我们稍后再讨论 Python 2如何才能找到model下面的pub.py文件。 

project/

------model/ 
  L一 count.py

  L一 new_count.py

L一 test. py

代码如下所示:

#count.py

class A():
def add(self,a,b):
return a+b

 

#new_count.py

from count import A
class B(A):
def sub(self,a,b):
return a-b result=B().add(2,5)
print result #输出结果为“7”

 目前,都没有问题,接下来创建与model目录平级的test.py

#test.py

from model import new_count

test=new_count.B()
test.add(2,5)

 输出结果如下图所示

 

知识延伸:
当Python在执行import语句时,到底进行了什么 操作。按照python的文档, 它执行了如下操作: 第l步, 创建一个新的module对象(它可能包含多个module) ;
第2步, 把这个module对象插到sys.module中;
第3步, 装载module的代码(如果需要,则必须先编译);
第4步, 执行新的module中对应的代码 在执行第3步时, 首先需要找到module程序所在的位直 ,搜索的顺序是:当前路径(以及从当前目录指定的sys.path),PythonPATH,再后是Python 安装时设直的相关的默认路径。 正因为存在这样的顺序 ,所以如果当前路径或 PythonPATH中存在与标准module同样的module,则会覆盖标准module。也就 是说, 如果当前目录下存在xml.py, 那么在执行import xml 时, 导入的是当前目录下的module, 而不是系统标准的xml。 了解了这些后, 我们就可以先构建一个package,以普通module的方式导入,这样即可直接访问此package中的各个 module。 Python 2中的package必须包含一个__init_.py的文件。

 调整后的代码如下所示:

#test.py

#coding:utf-8
import sys
sys.path.append("./model")#将model目录添加到系统环境变量path下
from model import new_count test=new_count.B()
print (test.add(5,5))

 但是运行之后,还是报错

我们使用的是python2,因此在model目录下面还需要在.../model/目录下创建一个__init_.py 文件(文件内容可以为空), 用来标识这是一个标准的包含了 Python 模块的目录。如下图所示

再次运行test.py文件,即可正常运行,输出结果如下图所示

 

 

Selenium 2自动化测试实战5(模块调用)的更多相关文章

  1. Selenium 2自动化测试实战21【调用JavaScript(控制浏览器的滚动条)】

     一.调用JavaScript(控制浏览器的滚动条) WebDriver提供了execute_script()方法来执行JavaScript代码.用于调整浏览器滚动条位置的JavaScript代码如下 ...

  2. Selenium 2自动化测试实战3(函数、类和方法)

    一.函数.类和方法1.函数在python中通过def关键字来定义函数 创建一个add()函数,此函数接收两个参数a,b,通过print()打印a+b的结果.调用add()函数,并且上传两个参数3,5给 ...

  3. Selenium 2自动化测试实战

    Selenium 2自动化测试实战 百度网盘 链接:https://pan.baidu.com/s/1aiP3d8Y1QlcHD3fAlEj4sg 提取码:jp8e 复制这段内容后打开百度网盘手机Ap ...

  4. 《Selenium 2自动化测试实战 基于Python语言》中发送最新邮件无内容问题的解决方法

    虫师的<Selenium 2自动化测试实战 基于Python语言>是我自动化测试的启蒙书 也是我推荐的自动化测试入门必备书,但是书中有一处明显的错误,会误导很多读者,这处错误就是第8章自动 ...

  5. Selenium 2自动化测试实战4(引用模块)

    一.模组1.模组也叫类库或模块,引用模块 在python中,通过import….或from….import….的方式引用模块,下面引用time模块 import time print (time.ct ...

  6. Selenium 与自动化测试 —— 《Selenium 2 自动化测试实战》读书笔记

    背景 最近在弄 appium,然后顺便发现了 Selenium 框架和这本书,恰好这本书也介绍了一些软件测试&自动化测试的理论知识,遂拿过来学习学习.所以本文几乎没有实践内容,大多都是概念和工 ...

  7. Selenium 2自动化测试实战35(HTML测试报告)

    HTML测试报告 显然,一份漂亮的测试报告展示自动化测试成果只有一个简单的log文件是不够的.HTMLTestRunner是python标准库unittest单元测试框架的一个扩展,它生成易于使用的H ...

  8. Selenium 2自动化测试实战25(自动化测试模型)

    一.自动化测试模型 自动化测试模型介绍:线性测试.模块化驱动测试.数据驱动测试和关键字驱动测试 线性测试:每个测试脚本相对独立,且不产生其他依赖与调用,只是单纯的来模拟用户完整的操作场景.模块化驱动测 ...

  9. Selenium 2自动化测试实战18(上传文件)

    一.上传文件 上传文件是比较常见的web功能之一,但WebDriver没有提供专门用于上传的方法. 一般web页面的上传功能的操作需要单击“上传”按钮后打开本地的Window窗口,从窗口选择本地文件进 ...

随机推荐

  1. deep_learning_Function_softmax_cross_entropy_with_logits

    [TensorFlow]tf.nn.softmax_cross_entropy_with_logits的用法 [TensorFlow]tf.nn.softmax_cross_entropy_with_ ...

  2. linux内核驱动module_init解析(2)

    本文转载自博客http://blog.csdn.net/u013216061/article/details/72511653 如果了解过Linux操作系统启动流程,那么当bootloader加载完k ...

  3. node.js启动服务,不依赖第三方

    好好学习,天天向上,懒惰.颓废让我越来越糟糕,所以分享一下,共同学习 纯node.js搭建一个小服务,下图为文件目录结构,很简单,很小 log文件是自动生成的 index.js文件 const url ...

  4. ESXi与物理交换机静态链路聚合配置过程中的小陷阱

    作者:陆斌文章来自微信公众号:平台人生 内容简介:ESXi与物理交换机之间配置静态链路聚合时,因为静态链路聚合的特点,在进行down网卡和从虚拟交换机移除网卡的操作时,可能会无法完成故障流量切换,影响 ...

  5. Discuz升级

      1.下载论坛程序文件 2.备份数据库 3.建立文件夹 old,旧程序除了 data , config, uc_client, uc_server 目录以外的程序移动进入 old目录中4. 上传 u ...

  6. buuctf@[OGeek2019]babyrop

    #!/usr/bin/python #coding:utf-8 from pwn import * #context.log_level = 'debug' io = process('./pwn', ...

  7. C# 从Object对象中读取属性的值

    https://www.cnblogs.com/xbblogs/p/7739483.html

  8. ueditor+复制word+图片不能上传

    最近公司做项目需要实现一个功能,在网页富文本编辑器中实现粘贴Word图文的功能. 我们在网站中使用的Web编辑器比较多,都是根据用户需求来选择的.目前还没有固定哪一个编辑器 有时候用的是UEditor ...

  9. hdu 1796 How many integers can you find 容斥第一题

    How many integers can you find Time Limit: 12000/5000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  10. mysql bit 和 tinyint 的区别及使用场景?

    bit类型语法:bit[(M)] : 位字段类型.M表示每个值的位数,范围从1到64.如果M被忽略,默认为1. tinyint是数字类型,存储小数, 一般对应编辑语言里的小字典或枚举类型. 节省空间的 ...