【Python自动化测试11】模块、包与路径知识合集

【Python自动化测试11】模块、包与路径知识合集,第1张

【Python自动化测试11】模块、包与路径知识合集

文章目录

一、前言 二、模块与包的知识合集

2.1 模块与包的定义

2.1.1 模块定义2.1.2 包的定义 2.2 模块与包的作用

2.2.1 模块的作用2.2.2 包的作用 2.3 包与模块的导入调用

2.3.1 模块调用2.3.2 包的导入2.3.3 模块与包导入方式2.3.4 安装三方模块2.3.5 国内镜像源 三、路径知识合集

3.1 路径处理

一、前言

  本文章主要讲解Python中模块、包以及路径的相关知识点内容,是自动化测试框架设计的基础铺垫,下方有系列文章的传送门,感兴趣的小伙伴也可以前往查看,话不多说,让我们一起看看吧~

系列文章:
  系列文章1:【Python自动化测试1】遇见Python之美
  系列文章2:【Python自动化测试2】Python安装配置及PyCharm基本使用
  系列文章3:【Python自动化测试3】初识数据类型与基础语法
  系列文章4:【Python自动化测试4】字符串知识总结
  系列文章5:【Python自动化测试5】列表与元组知识总结
  系列文章6:【Python自动化测试6】字典与集合知识总结
  系列文章7:【Python自动化测试7】数据运算符知识合集
  系列文章8:【Python自动化测试8】流程控制语句讲解
  系列文章9:【Python自动化测试9】函数知识合集
  系列文章10:【Python自动化测试10】文件基础 *** 作

二、模块与包的知识合集 2.1 模块与包的定义 2.1.1 模块定义

  模块(Module):Python模块就是一个Python文件,以.py结尾的文件,我们称之为模块,包含了Python对象定义和Python语句。

2.1.2 包的定义

  包(Package):Python中的包与我们平常所创建的文件夹不同,Python包创建完成后包含一个__init__.py文件的目录(文件夹)。

  包的命名同变量、模块一样,都需要遵守标识符规则,这点需要注意。

2.2 模块与包的作用 2.2.1 模块的作用

  模块的作用主要有以下几点:

1、模块能够让你更有逻辑的组织你的代码
2、把相关功能的代码写到一个模块里,能让你的代码使用更便捷、高效,并有一定的易读性
3、模块能定义函数、类、变量等等,模块中包含可执行的代码

  

2.2.2 包的作用

  对于包而言,这个时候肯定会有疑问,那么__init__的作用是什么,其实是Python包的一个规则,它是根据这个文件来判断出这是一个Python包的,如果Python包中没有__init__这个文件,那么在后续导包时会出现模块、路径找不到的情况,故此我们需要保留__init__。如果我们新建一个文件夹,在文件夹里在新建一个__init__,那么Python将会自动识别为Python包:

2.3 包与模块的导入调用 2.3.1 模块调用

  因为模块能够更好的组织代码,故此也会对代码进行一个模块划分,例如测试用例放在excel中,excel放在测试用例的目录下,日志系统则放在日志的py文件中,放在日志的Python包下,道理是一样,相类似的功能都会分开进行管理,我们在A模块中需要使用B模块的内容,就需要进行模块调用,下面的示例需要从main模块调用Demo模块的函数,结构与示例如下:

  如下示例所示,这样我们就成功的从main模块调用了Demo模块的number函数并可以在main模块中使用它:

# 导入: from 包名.模块名 import 函数名 / 变量 /...
from Pkg_1.Demo import number

number()

  

2.3.2 包的导入

  一个包导入的路径我们可以通过sys.path来进行确认,导包from后面的路径是从sys.path当中截取的。

  通常包括了项目目录、Python安装目录以及Python虚拟环境:

import pprint
import sys
pprint.pprint(sys.path)


  在上图中我们可以看到,没有Demo.py,那么就意味着,我们不能够直接from Demo.py,因为系统无法识别找到:

  

2.3.3 模块与包导入方式

  模块与包的导入方式主要有以下几个内容:

"""
导入的几种方式:
import *
import ...
import as
from ... import *
from ... import ...
from ... import ... as ...
"""


"""
常用的主要有from import导入以及import的导入方式:
import *                了解即可,切记不可在真实项目中使用!! import * 代表的含义是导入sys.path下所有的模块、函数、变量...      
from ... import *       导入某个包 / 文件 下面的所有内容,尽量避免使用,同样也是了解即可
import ...              通常是导入一个模块,内置模块或者第三模块(需要先行安装才可使用),以此来使用

from ... import ... as ...      as是给一个别名,A模块与B模块中有函数、变量名冲突等,那么给个别名,就可以通过别名进行调用,防止名称重复

特别注意:
import导入不能直接导入函数,需要使用from的方式导入,import只能导入包和模块


"""

  

2.3.4 安装三方模块

  我们知道Python有内置模块,当我们需要实现一些功能,但Python内置模块没有时则需要导入三方模块,导入后即可使用对应功能,简易信息如下所示:

"""
第三方模块的安装是在命令行进行的,格式为:
pip install 三方模块名

安装方式1: pip install requests
安装方式2:通过PyCharm中的Settings可以直接进行设置安装(不详细说明,大家可以自行百度,普遍推荐第一种命令安装方式)

如果不进行三方模块的安装,直接进行导入,那么是无法导入的,输入后会报红色波浪线(报错)
"""

  

2.3.5 国内镜像源

  在安装时因为国内的下载速度有时候会比较慢,那么我们可以使用镜像源来提高加快下载速度,任意选择一种即可,笔者通常会使用清华、阿里云镜像源,我们可以一次性通过Settings进行永久设置:

"""
镜像源合集:
清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/ 
豆瓣:http://pypi.douban.com/simple/
"""



  

三、路径知识合集 3.1 路径处理

  在Python中os模块是专门用来处理路径的,os模块中有很多方法能够让我们通过代码实现对目录的增删改查,详见下列表格,前三个加粗格式的方法是常用方法需要掌握,其他方法在自动化测试领域中使用较少,了解即可:

方法描述os.path.abspath()获取绝对路径os.path.dirname()返回文件/目录的所在路径os.path.join(x,y)连接两个部分的路径,组成完整路径os.getcwd()显示当前的工作路径os.chdir()切换工作路径os.mkdir()在某个目录下创建一个新目录os.rmdir()删除一个目录os.listdir()获取当前路径下的目录列表,返回列表格式数据os.path.isdir()判断当前文件是否是目录,返回布尔值os.path.isfile()判断当前文件是否是文件,返回布尔值

  
  路径有两种概念,相对路径和绝对路径,表格如下:

名词描述绝对路径指目录下的绝对位置,直接到达目标位置,通常是从盘符开始的路径相对路径指由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系

  代码展示如下,代码中只列举了在自动化测试中会使用到的一些路径处理方式,大家需要掌握,其他方式了解即可,需要使用时可以查看对应的表格说明:

# __file__,当前的文件路径
print(f"当前路径为:  {__file__}")

# 导入os模块
import os

# 获取当前文件的绝对路径,"."点代表的意思是当前目录
cwd = os.path.abspath('.')
print(f"该文件的绝对路径为:  {cwd}")

# 获取路径的目录
dir_name = os.path.dirname(cwd)
print(f"路径的目录为:  {dir_name}")

# 路径拼接,这里只是拼接了路径,纯展示
new_dir1 = os.path.join(dir_name, "正在拼接")
print(new_dir1)

# 路径拼接举例2,这里文件举例,这样也只是纯展示而已,并不会新创建一个文件,如果想新创建文件,我们需要用到open函数
new_dir2 = os.path.join(dir_name, "new_file.txt")
print(new_dir2)

# 创建路径下的文件
f = open("new_file.txt", encoding="utf-8", mode="w")
f.close()

  
  

  好啦~以上就是本次文章分享的全部内容啦,你学会了吗?希望能给大家带来帮助哦!

  
  

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5703848.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存