Python对yaml和json文件的读取:
yaml文件读取:
首先创建一个yaml文件test.yaml
import yaml #引入包
f=open(path) #建立Python的文件对象f, 打开yaml文件到文件对象f;注:这一操作在打开所有第三方文件格式的时候都要做,不一定是yaml文件
test=yaml.load(f) #通过yaml模块中的load函数,将yaml 数据以Python中字典的形式加载进来
注:path是test.yaml的文件路径,可以通过 path= os.path.dirname(os.path.realpath(_file_))+"test.yaml"的方式获取,如果py文件和yaml文件在同一个文件夹下,可以直接用'test.yaml'
然后字典test中的数据就可以灵活运用了
json文件读取:
json文件的读取方式和处理方式和yaml文件相同
import json
f=open(path)
test=json.load(f)
一个简单栗子:
# coding: UTF-8 import yaml import json f= open('test.yaml') test_f=yaml.load(f) print f print test_f g=open('test.json') test_g=json.load(g) print g print test_g print type(test_f) print type(test_g)
输出
<open file 'test.yaml', mode 'r' at 0x100c2b810> {'Content-Type': 'application/x-www-form-urlencoded'} <open file 'test.json', mode 'r' at 0x100c2b8a0> {u'Content-Type': u'application/x-www-form-urlencoded'} <type 'dict'> <type 'dict'>
从以上的小栗子可以看出,yaml 文件和json文件的格式输出虽然都是字典,但还是有小区别的,这就带来一些影响
json的输出带u:也就是unicode的格式标志,而Python的格式一般会在文件开头定义成UTF-8
这就导致对于json文件,解析时有时会出现错误,而接口测试的接口响应数据就是json格式,所以在出来接口响应数据的py文件中,要加入以下两句:
import sys #设置默认解码格式,如果不加这句请求的返回值有的是Unicode,logging输出时会报解码错误 reload(sys) sys.setdefaultencoding('utf-8')
而yaml 文件一般用做用例,来记录请求参数
yaml文件与json文件的区别
yaml文件书写格式:
Testcase_name:test Method: POST Testcase: - ID: 1 Header: Content-Type: application/x-www-form-urlencoded x-access-token: "" Data: name: "aa" age:"bb" Result: resultcode: 0 resultmsg: ""
yaml输出格式:
{ 'Method': 'POST', 'Testcase_name': 'test' 'Testcase': [ {'Header': {'x-access-token': '', 'Content-Type': 'application/x-www-form-urlencoded'}, 'Data': {'age': 'bb', 'name': 'aa'}, 'ID': 1, 'Result': {'resultcode': 0, 'resultmsg': ''} } ], }
json文件书写格式:
{ "Content-Type": "application/x-www-form-urlencoded" }
补充:python文件有自带的读取函数
读取方式:
f=open('test_try.yaml') test=f.read()
这种方式不用引用模块,但是test的类型是字符串