一、模块调用

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. iperf和iperf3详解

    一.iperf server端: iperf -s -p 25001 -B 192.168.33.103 (-u) -s  指定server端 -p 指定端口(要和客户端一致) -B 绑定ip地址 - ...

  2. java8学习之Stream分组与分区详解

    Stream应用: 继续举例来操练Stream,对于下面这两个集合: 需求是:将这两个集合组合起来,形成对各自人员打招呼的结果,输出的结果如: "Hi zhangsan".&quo ...

  3. touch cyusbConfig.cmake

    touch cyusbConfig.cmake cmake文件丢失,与其解决问题,不如临时建立一个临时文件

  4. 递归型SPFA判负环 + 最优比例环 || [Usaco2007 Dec]奶牛的旅行 || BZOJ 1690 || Luogu P2868

    题外话:最近差不多要退役,复赛打完就退役回去认真读文化课. 题面:P2868 [USACO07DEC]观光奶牛Sightseeing Cows 题解:最优比例环 题目实际是要求一个ans,使得对于图中 ...

  5. 浏览器自动将参数中的url转码问题

    遇到一个问题, 开始的url如下: http://localhost:6666/pages/wxpay.html? code_url=weixin://wxpay/biz 请求转发到谷歌浏览器打开后变 ...

  6. vue iOS上传图片file 出错

    前言 用vue 移动端上传图片在低版本的 ios 手机上 图片转换base64 在转换file 文件类型 会报错 并且报错 “Script Error ” 查阅了github 和一些文档发现 可以吧 ...

  7. python 的ConfigParser模块

    Python 之ConfigParser模块 一.ConfigParser简介 ConfigParser 是用来读取配置文件的包.配置文件的格式如下:中括号“[ ]”内包含的为section.sect ...

  8. 轮子:读取config.ini文件

    python: 把config.ini文件成map返回 def get_conf(conf_file): conf = {} ll=list(map(lambda x: x.replace('&quo ...

  9. mybatis之联表查询

    今天碰到了一个问题,就是要在三张表里面各取一部分数据然后组成一个list传到前台页面显示.但是并不想在后台做太多判断,(因为涉及到for循环)会拉慢运行速度.正好用的框架是spring+springM ...

  10. [傻瓜式一步到位] 阿里云服务器Centos上部署一个Flask项目

    网络上关于flask部署Centos的教程有挺多,不过也很杂乱. 在我第一次将flask上传到centos服务器中遇到了不少问题,也费了挺大的劲. 在参考了一些教程,并综合了几个教程之后才将flask ...