自动化测试脚本总结

本文介绍了Python中os和os.path模块的常用函数,包括文件路径处理、文件和目录的创建与删除、文件属性获取等。同时讨论了文件的打开模式和文件对象的方法,如读写操作。还提到了time模块在格式化时间方面的应用,以及如何利用这些知识进行自动化测试中的文件命名。
摘要由CSDN通过智能技术生成

Part1 先来谈谈文件的路径问题吧。。。

发现用到了好多os的属性,干脆将表贴出来吧。。

                        关于os模块中文件、目录常用函数 

函数名

使用方法

  getcwd()  返回当前工作目录
  chdir(path)  改变工作目录
  listdir(path='.')  列举指定目录中的文件名('.'表示当前目录,'..'表示上一级目录)
  mkdir(path)  创建单层目录,如该目录已存在抛出异常
  makedirs(path)  递归创建多层目录,如该目录已存在抛出异常,注意:'E:\\a\\b'和'E:\\a\\c'并不会冲突
  remove(path)  删除文件
  rmdir(path)  删除单层目录,如该目录非空则抛出异常
  removedirs(path)  递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常
  rename(old, new)  将文件old重命名为new
  system(command)  运行系统的shell命令
  walk(top)  遍历top路径以下所有的子目录,返回一个三元组:(路径, [包含目录], [包含文件])

以下是支持路径操作中常用到的一些定义,支持所有平台

  os.curdir  指代当前目录('.')
  os.pardir  指代上一级目录('..')
  os.sep  输出操作系统特定的路径分隔符(Win下为'\\',Linux下为'/')
  os.linesep  当前平台使用的行终止符(Win下为'\r\n',Linux下为'\n')
  os.name  指代当前使用的操作系统(包括:'posix',  'nt', 'mac', 'os2', 'ce', 'java')

                    

                  os.path模块中关于路径常用的函数使用方法    

函数名

使用方法

  basename(path)  去掉目录路径,单独返回文件名
  dirname(path)  去掉文件名,单独返回目录路径
  join(path1[, path2[, ...]])  将path1, path2各部分组合成一个路径名
  split(path)  分割文件名与路径,返回(f_path, f_name)元组。如果完全使用目录,它也会将最后一个目录作为文件名分离,且不会判断文件或者目录是否存在
  splitext(path)  分离文件名与扩展名,返回(f_name,f_extension)元组
  getsize(file)  返回指定文件的尺寸,单位是字节
  getatime(file)  返回指定文件最近的访问时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)
  getctime(file)  返回指定文件的创建时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)
  getmtime(file)  返回指定文件最新的修改时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)

以下为函数返回True或False

  exists(path)  判断指定路径(目录或文件)是否存在
  isabs(path)  判断指定路径是否为绝对路径
  isdir(path)  判断指定路径是否存在且是一个目录
  isfile(path)  判断指定路径是否存在且是一个文件
  islink(path)  判断指定路径是否存在且是一个符号链接
  ismount(path)  判断指定路径是否存在且是一个挂载点
  samefile(path1, paht2)  判断path1和path2两个路径是否指向同一个文件

首先说明:为了是代码具有通用性的效果,一般在代码中给出的路径都是相对路径而非绝对路径。

不同的模块(.py文件)只要在同一个文件夹下(相同的路径)就可以相互调用。

问题就出现了:如果在不同的文件夹里怎么相互调用呢?

答:可以通过添加路径的方式。用的是sys模块。

import sys
sys.path.append('..\xxxx')  #'..'为上一级的路径,xxxx为需要载入的模块的所在的文件夹名
import what_you_want 

原来如此:(原来我还是用了强大的os模块)

2.新建文件夹,文件

 创建前为了防止出现异常情况,事先做出判断,是否文件夹的路径已存在:

if not os.path.isdir(wenjianjaiPath):
        os.makedirs(wenjianjiaPath)      #若不存在则创建文件夹的路径

3.在当前文件夹下创建一个新的文件夹

 sys.path[0]+'\\'+"what you like "

4.在指定文件夹下添加文件

os.path.join(wenjianjiaPath,wenjianjiamingzi)

part2:谈完路径,接着来谈谈文件的操作

现附上一张图:

打开模式执行操作
'r'以只读方式打开文件(默认)
'w'以写入的方式打开文件,会覆盖已存在的文件
'x'如果文件已经存在,使用此模式打开将引发异常
'a'以写入模式打开,如果文件存在,则在末尾追加写入
'b'以二进制模式打开文件
't'以文本模式打开(默认)
'+'可读写模式(可添加到其他模式中使用)
'U'通用换行符支持


                    文件对象方法

文件对象方法执行操作
f.close()关闭文件
f.read([size=-1])从文件读取size个字符,当未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回
f.readline([size=-1])从文件中读取并返回一行(包括行结束符),如果有size有定义则返回size个字符
f.write(str)将字符串str写入文件
f.writelines(seq)向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象
f.seek(offset, from)在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节
f.tell()返回当前在文件中的位置
f.truncate([size=file.tell()])截取文件到size个字节,默认是截取到文件指针当前位置

1.文件的打开操作

resultdatafile = open(resultFilepath,'a+')   #文件路径,和打开模式(默认为以文本模式打开)

2.文件的写入

 resultdatafile.write(filepath)

3.循环遍历文件夹里的文件

walk(top)  遍历top路径以下所有的子目录,返回一个三元组:(路径, [包含目录], [包含文件])

for i in os.walk(TESTEXAMPLE_NAME):  #i为一个三元组,(路径, [包含目录], [包含文件]),最后一个为包含文件,对i[2]进行操作,就可以对文件进行操作啦
        lenth = len(i[2])    

4.最后一条关闭文件,在文件写完以后记得关闭文件,这是个好习惯,也为了避免发生什么幺蛾子bug

“有open,有close”

f.close()

part3:python的time模块:http://bbs.fishc.com/forum.php?mod=viewthread&tid=51326&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403

先上表一张:

time.strftime(format[, t]) 

把一个代表时间的元组或者 struct_time(如由 time.localtime() 和 time.gmtime() 返回)转化为格式化的时间字符串。如果 t 未指定,将传入 time.localtime()。如果元组中任何一个元素越界,将会抛出 ValueError 异常。

format 格式如下:
 

格式含义备注
%a本地(locale)简化星期名称
%A本地完整星期名称
%b本地简化月份名称
%B本地完整月份名称
%c本地相应的日期和时间表示
%d一个月中的第几天(01 - 31)
%H一天中的第几个小时(24 小时制,00 - 23)
%l一天中的第几个小时(12 小时制,01 - 12)
%j一年中的第几天(001 - 366)
%m月份(01 - 12)
%M分钟数(00 - 59)
%p本地 am 或者 pm 的相应符注1
%S秒(01 - 61)注2
%U一年中的星期数(00 - 53 星期天是一个星期的开始)第一个星期天之前的所有天数都放在第 0 周注3
%w一个星期中的第几天(0 - 6,0 是星期天)注3
%W和 %U 基本相同,不同的是 %W 以星期一为一个星期的开始
%x本地相应日期
%X本地相应时间
%y去掉世纪的年份(00 - 99)
%Y完整的年份
%z用 +HHMM 或 -HHMM 表示距离格林威治的时区偏移(H 代表十进制的小时数,M 代表十进制的分钟数)
%Z时区的名字(如果不存在为空字符)
%%%号本身


注1:“%p”只有与“%I”配合使用才有效果。
注2:范围真的是 0 ~ 61(你没有看错哦^_^);60 代表闰秒,61 是基于历史原因保留。
注3:当使用 strptime() 函数时,只有当在这年中的周数和天数被确定的时候 %U 和 %W 才会被计算。

example:

#根据时间动态的给文件命名

RESULT_FILE_NAME = str(time.strftime("%Y%m%d_%H%M%S",time.localtime()))+'.txt'

 

最后:下方这份完整的自动化测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员二黑

V:testerhei

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值