精心整理python自动化测试小技巧三

283 阅读9分钟

61.字符串模板
print “ aaa”.substitute(aaa=”haha”)等价于上面的元组替换substitute非常严谨,如果后面括号没有aaa则会报错safesubstitute则不报错但会原样输出 {aaa}
62.同时使用项和索引的双重循环:for i,c in enumerate(“abcd”):
print c,i
for循环过滤的作用
aaa=[x**2 for x in range(4)]
for i in aaa
print i
obj.doc 可以动态获取对象obj的文档字串
63.重定向输出到标准错误输出:
import sys
sys.stderr, ‘Fatal error:invalid input!’
重定向输出到文本文件:
logfile=open(‘/tmp/mylog.txt’,’a’)
print >> logfile,’Fatal error:invalid input!’
logfile.close()
64.OS的方法

os.mknod(“test.txt”) #创建空文件 windos环境下无法使用
os.getcwd()——得到当前工作的目录。
os.remove()——删除指定文件
os.rmdir()——删除指定目录 删除多个目录:os.removedirs
os.mkdir()——创建目录 注意:这样只能建立一层,要想递归建立可用:os.makedirs()
os.path.isfile()——判断指定对象是否为文件。是返回True,否则False
os.path.isdir()——判断指定对象是否为目录。是True,否则False。
os.path.split()——返回路径的目录和文件名。
os.path.exists()——检验指定的对象是否存在
os.system()——执行shell命令。 如:os.system(“echo’hello world’”)
os.chdir()——改变目录到指定目录
os.path.getsize()——获得文件的大小
os.path.abspath()
os.path.join(path, name)——连接目录和文件名。
os.path.basename(path)——返回文件名
os.path.dirname(path)——返回文件路径
os.listdir()——指定所有目录下所有的文件和目录名
os.name()——判断现在正在用的平台,Windows 返回 ‘nt’; Linux 返回’posix’
检验给出的路径是否是一个文件:os.path.isfile()
检验给出的路径是否是一个目录:os.path.isdir()
读取和设置环境变量:os.getenv() 与os.putenv()
获取文件属性:os.stat(file)
修改文件权限与时间戳:os.chmod(file)

65.统一换行符:
ls=os.linesep
ls即为行中止符
66.open方法,打开文件时的参照表

fp = open(“test.txt”,w) #直接打开一个文件,如果文件不存在则创建文件
w:以写方式打开,
a:以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+:以读写模式打开
w+:以读写模式打开 (参见 w )
a+:以读写模式打开 (参见 a )
rb:以二进制读模式打开
wb:以二进制写模式打开 (参见 w )
ab:以二进制追加模式打开 (参见 a )
rb+:以二进制读写模式打开 (参见 r+ )
wb+:以二进制读写模式打开 (参见 w+ )
ab+:以二进制读写模式打开 (参见 a+ )
fp.read([size]) #size为读取的长度,以byte为单位
fp.readline([size]) #读一行,如果定义了size,有可能返回的只是一行的一部分
fp.readlines([size]) #把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。
fp.write(str) #把str写到文件中,write()并不会在str后加上一个换行符
fp.writelines(seq) #把seq的内容全部写到文件中(多行一次性写入)。这个函数也只是忠实地写入,不会在每行后面加上任何东西。
fp.close() #关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯。 如果一个文件在关闭后还对其进行操作会产生ValueError
fp.flush() #把缓冲区的内容写入硬盘
fp.fileno() #返回一个长整型的”文件标签“
fp.isatty() #文件是否是一个终端设备文件(unix系统中的)
fp.tell() #返回文件操作标记的当前位置,以文件的开头为原点
fp.next() #返回下一行,并将文件操作标记位移到下一行。把一个file用于for ⋯ in file这样的语句时,就是调用next()函数来实现遍历的。
fp.seek(offset[,whence]) #将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。
fp.truncate([size]) #把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。

67.目录操作方法大全
1.创建目录
os.mkdir(“file”)
2.复制文件:
shutil.copyfile(“oldfile”,”newfile”) #oldfile和newfile都只能是文件
shutil.copy(“oldfile”,”newfile”) #oldfile只能是文件夹,newfile可以是文件,也可以是目标目录
3.复制文件夹:
4.shutil.copytree(“olddir”,”newdir”) #olddir和newdir都只能是目录,且newdir必须不存在
5.重命名文件(目录)
os.rename(“oldname”,”newname”) #文件或目录都是使用这条命令
6.移动文件(目录)
shutil.move(“oldpos”,”newpos”)
7.删除文件
os.remove(“file”)
8.删除目录
os.rmdir(“dir”) #只能删除空目录
shutil.rmtree(“dir”) #空目录、有内容的目录都可以删
9.转换目录
os.chdir(“path”) #换路径

68.pythin可以下载pywin32来实现操控win32的窗体
browser.refresh()
time.sleep(1)
try :
el.send_keys(Keys.ENTER)
except:
print u”点击完了”

69.用aotuit可以进行操作win32控件
70.导入其他py文件的方法(函数)
from 其他文件 import 方法名
71.字符串.strip()为字符串的删除内建函数。 是从开头和结尾处。 如果括号为空,则删除空白符,如\n\r\t等。
.lstrip 是从开头处
.rstrip 是从结尾处
72.比较:空和报错获取的列表。
self.verificationErrors = []
self.assertEqual([], self.verificationErrors)
73.打开其他程序,如记事本
os.system(‘notepad’)
74.对写excel操作时,要在for循环内部初始化sheet1等。后方写入时写的是for循环内的,不是外的(最初的)
75.可以适应各种平台的os模块字符:
linesep 用于在文件中分隔行的字符串
sep 用来分隔文件路径名的字符串
pathsep 用来分隔文件路径的字符串
curdir 当前的工作目录的字符串名称
pardir 父目录字符串名称
76.文件截取:truncate()
文件对象.truncate() 接收一个size,截取到size大小,如果不写,就会截止到文件的当前位置,即0.结果就是删除了文件
77.文件对象方法
file.close() 关闭文件
.fileno() 返回文件描述符
.flush() 刷新文件的内部缓冲区
.isatty() 判断文件是否是一个类tty设备
.next() 返回下一行,属于迭代器功能
.read(size=-1) 读取size个字节,当size为0或负数时,读取剩余所有字节,然后作为字符串返回
.readinto(buf,size) 读取size个字节到buf缓冲器(已失效)
.readline(size=-1) 从文件中读取并返回一行(包括行结束符),或返回最大size个字符
.readlines(sizhint) 读取所有行,并作为一个列表返回(包含所有的行结束符);sizhint的值为返回大约sizhint的字节的行,取决于缓冲器,只能为缓冲器的倍数
.xreadlines() 用于迭代,可以替换readlines()的一个更高效的方法
.seek(x,0) 移动光标
.tell() 返回当前在文件中的位置
.truncate(size=file.tell()) 截取文件到最大size字节,默认为当前文件位置
.write(str) 向文件中写字符串
.writelines(seq) 向文件写入字符串序列 seq应该是一个可迭代对象,返回值应该是字符串
78.文件对象属性
file.name 文件名
.mode 打开模式
.closed 标志变量
.closed 是否关闭了,true为关闭了
.encoding 文件所使用的编码
.newlines 查看是否有行分隔符,没有时,为none,只有一种时为字符串,有多种时为所有行结束符的列表
.softspace 为0表示在输出一行数据后要加上一个空格符 1表示不加
79.多线程的queue模块。可以不限时间的等待用户行为。需要import Queue 供多线程使用的同步先进先出队列
q=Queue.Queue(maxsize):先进先出
q=Queue.LifoQueue(maxsize):先进后出
80.os模块
文件处理
os.mkfifo() /os.mknod() 创建命名管道/文件系统节点
.remove() /.unlink() 删除文件
.rename() / .renmaes() 重命名文件
.stat() 返回文件信息
.symlink() 创建符号链接
.utime() 更新时间戳
.tmpfile() 创建并打开(’w+b’) 一个新的临时文件
.walk() 生成一个目录树下的所有文件名
文件夹/目录
.chdir()/.fchdir() 改变当前工作目录/通过一个文件描述符改变当前工作目录
.chroot() 改变当前进程的根目录
.listdir() 列出指定目录的文件
.getcwd()/.getcwdu() 返回当前工作目录
.mkdir()/.makedirs() 创建目录/创建多层目录
.rmdir()/.removedirs() 删除目录/删除多层目录
81.访问权限
.access() 检验权限模式
.chmodj() 改变权限模式
.chown()/lchown() 改变owner 和group ID
.umask() 设置默认权限模式
82.文件描述符操作
.open() 底层的操作系统open
.read()/.write() 根据文件描述符读取/写入数据
.dup()/.dup2() 复制文件描述符号
83.设备号
.makedev() 从major和minor设备号创建一个原始设备号
.major()/.minor() 从原始设备号获得major/minor设备号
84.os.path 模块中的路径名访问函数
分隔
os.path.basename() 去掉目录路径,返回文件名
..dirname() 去掉文件名,返回目录路径
..join() 将分离的各部分组合成一个路径名
..split() 返回(dirname(),basename())元组
..splitdrive() 返回(dirvename,pathname)元组
..splitext() 返回(filename,extension)元组
85.信息
..getatime() 返回最近访问时间
..getctime() 返回文件创建时间
..getmtime() 返回最近文件修改时间
..getsize() 返回文件大小 多少字节数
86.查询
..exists() 指定路径文件或目录是否存在
..isabs() 指定路径是否为绝对路径
..isdir() 指定路径是否存在且为一个目录
..isfile() 指定路径是否存在且为一个文件
..islink() 指定路径是否存在且为一个符号链接
..ismount() 指定路径是否存在且为一个挂载点
..samefile() 俩个路径名是否指向同一个文件

87.Tkinter :偏函数应用
import Tkinter
from functools import partial
root = Tkinter.Tk()
MyButton = partial(Tkinter.Button,root,fg=’white’,bg=’blue’)
b1 = MyButton(text=’button1’)
b2 = MyButton(text=’button2’)
qb = MyButton(text=’quit’,bg=’red’,command=root.quit)
b1.pack()
b2.pack()
qb.pack(fill=Tkinter.X,expand=True)
root.title(‘PFAs!’)
root.mainloop()