概述
从Selenium模块化一文中,可以看出参数化的必要性,本文来介绍下读取外部txt文件的方法。
如何打开文件
打开文件有以下两个函数可以应用:
1、open(file_name,access_mode)
file_name: 文件路径及名称;
access_mode :访问方式,具体参数如下,,未提供参数,则默认为r:
· r:表示读取;
· w:表示写入;
· a:表示添加;
· +: 表示读写;
· b:表示2进制访问;
2、file函数
file()内建函数它的功能等于open(),如下根据文档说明可知:
>>> help(open)
open(...)
open(name[, mode[, buffering]]) -> file object
Open a file using the file() type, returns a file object. This is the
preferred way to open a file. See file.__doc__ for further information.(END)
读取英文txt
接下来介绍读取txt文件内容的方法,Python中提供了读取文件的几种方法,如下;
· Read() 读取整个文件
· Readlines()按行读取整个文件
· Readeline()按行读取一行内容
现在假设读取的txt文件存储的是用户登录名及密码的测试数据,内容如下:
admin,admin
guest,guest
test,test
那么这种情况就比较适合用按行读取的方式来获取文件,如下示例:
#coding:utf-8 import codecs def str_reader_txt(address): fp=open(address,'r') users=[] pwds=[] lines=fp.readlines() for data in lines: name,pwd=data.split(',') name=name.strip(' \t\r\n') pwd=pwd.strip(' \t\r\n') users.append(name) pwds.append(pwd) print "user:%s(len(%d))" %(name,len(name)) print "pwd:%s(len(%d))" %(pwd,len(pwd)) return users,pwds fp.close() |
上述通过Readlines()按行读取txt文件内容,并且使用split()函数切割字符串,分别得到用户名和密码,需要注意的是读取出来的字符有最后面的回车符,所以需要strip函数进行过滤。
读取中文txt
但是实际测试过程中,也有可能需要输入中文的用户及密码,能否测试通过?修改测试文档txt的用户名为中文,内容如下:
管理员,admin
来宾,guest
测试人员,test
执行上述脚本后,结果如下:
可以看出,上述的脚本,在进行中文处理时,遇到异常,中文字符显示乱码,下面提供两种解决方法:
方法一
#coding:utf-8 import codecs def str_reader_txt(address): fp=open(address,'r') users=[] pwds=[] lines=fp.readlines() for data in lines: print type(data) data=data.decode("gb18030")#处理中文编码问题 print type(data) name,pwd=data.split(',') name=name.strip(' \t\r\n') pwd=pwd.strip(' \t\r\n') users.append(name) pwds.append(pwd) print "user:%s(len(%d))" %(name,len(name)) print "pwd:%s(len(%d))" %(pwd,len(pwd)) return users,pwds fp.close() |