在自动化测试中,需要把测试的数据分离到JSON,YAML等文件中。
YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。YAML 的配置文件后缀为 .yml,如:runoob.yml 。基本语法 大小写敏感 使用缩进表示层级关系 缩进不允许使用tab,只允许空格 缩进的空格数不重要,只要相同层级的元素左对齐即可 '#'表示注释
1)在工程文件testDev下新建一个名为数据驱动的package;
2)在数据驱动包中新建login.json的文件;
3)在login.json文件在中编写如下代码:
1 { 2 "login":{"username": "cch","password":"admin"} 3 }
4)在数据驱动包中新建operationJson的python文件,并编写如下代码:
1 import json 2 def readJson(): 3 return json.load(open("login.json")) #从login.json文件中读取数据 4 print(readJson()) 5 print(type(readJson())) 6 7 print(readJson()["login"]["password"]) #从字典中获取登录的密码
5)运行operationJson文件中的代码后,得到如下结果:
1)在工程文件testDev下新建一个名为数据驱动的package;
2)在数据驱动包中新建login.yaml的文件;
3)在login.yaml文件在中编写如下代码:
1 login: 2 username: 无涯 #注意冒号后边需空一格 3 password: admin 4 5 ali: 6 taobao: 7 shop: 8 name: 无涯课堂
4)在数据驱动包中新建operationYaml的python文件,并编写如下代码:
1 import yaml 2 def readYamlDict(): 3 with open(file='login.yaml', encoding='utf-8') as f: 4 return yaml.safe_load(f) 5 print(readYamlDict()) 6 print(type(readYamlDict())) 7 print(readYamlDict()['login']['password']) 8 print(readYamlDict()['ali']['taobao']['shop']['name'])
5)运行operationYaml文件中的代码,得到如下结果:
1)在工程文件testDev下新建一个名为数据驱动的package;
2)在数据驱动包中新建data.yaml的文件;
3)在data.yaml文件在中编写如下代码:
1 --- #注意须添加“---”表示列表 2 login: 3 username: 无涯 4 --- 5 login: 6 username: wuya
4)在数据驱动包中新建operationYaml的python文件,并编写如下代码:
1 import yaml 2 def readYamlList(): 3 with open(file="data.yaml",mode="r",encoding="utf-8") as f: 4 return list(yaml.safe_load_all(f)) 5 print(readYamlList()) 6 print(type(readYamlList())) 7 print(readYamlList()[0]["login"]["username"]) #获取“无涯” 8 print(readYamlList()[1]["login"]["username"]) #获取“wuya”
5)运行operationYaml文件中的代码,得到如下结果:
1)在module包下面导入一个名为data.csv的文件,文件内容如下:
1 username,password,city 2 无涯,admin,中国西安 3 wuya,admin,西安
2)在module包下面新建一个名为csv学习的python文件,并编写以下代码:
1 import csv 2 def readCsvList(): 3 lists=[] 4 with open(file='data.csv',mode="r",encoding="utf-8") as f: 5 reader=csv.reader(f) #调用reader形成列表形式 6 next(reader) #不读取第一行 7 for item in reader: 8 lists.append(item) 9 return lists 10 print(readCsvList())
以上代码运行的结果为:
1)在module包下面导入一个名为data.csv的文件,文件内容如下:
1 username,password,city 2 无涯,admin,中国西安 3 wuya,admin,西安
2)在module包下面新建一个名为csv学习的python文件,并编写以下代码:
1 import csv 2 def readCsvDict(): 3 lists=[] 4 with open(file="data.csv",mode="r",encoding="utf-8-sig") as f:#使用encoding="utf-8-sig",防止乱码 5 reader=csv.DictReader(f) 6 for item in reader: 7 lists.append(dict(item)) 8 return lists 9 print(readCsvDict())
以上代码的运行结果为:
1)在module包下面导入一个名为data.xlsx的文件,文件内容如下:
username | password | city |
无涯 | admin | 中国西安 |
2)在module包下面新建一个名为excel学习的python文件,并编写以下代码:
1 import xlrd 2 def readExcel(): 3 lists=[] 4 book=xlrd.open_workbook("data.xlsx") #读取excel文件 5 sheet=book.sheet_by_index(0) #操作sheet 6 for item in range(1,sheet.nrows): 7 lists.append(sheet.row_values(item)) 8 return lists 9 print(readExcel())
以上代码的运行结果为: