json文件:
json_data.json
{
"err_passwd": {
"loginname": "13211112222",
"passwd": "123456",
"resultcode": 500,
"message": "登录失败!"
},
"blank_loginname": {
"loginname": "",
"passwd": "123456",
"resultcode": 510,
"message": "登录名不能为空"
},
"blank_passwd": {
"loginname": "13211112222",
"passwd": "",
"resultcode": 510,
"message": "密码不能为空"
},
"err_phonenum": {
"loginname": "12345678901",
"passwd": "E10ADC3949BA59ABBE56E057F20F883E",
"resultcode": 500,
"message": "请输入正确的手机号!"
},
"err_username_passwd": {
"loginname": "13244446666",
"passwd": "E10ADC3949BA59ABBE56E057F20F883E",
"resultcode": 500,
"message": "登录失败!"
}
}
代码:
import os,json
# 定义一个工具类
class Utils:
"""
csv文件处理:本方法是为了适应pytest的参数化所需要的数据格式,后面会对读取数据进行处理
pytest.mark.parametrize() :参数化所需格式为:[(),(),()]
"""
# 定义一个初始化方法,主要获取到存放csv文件的目录的绝对路径
def __init__(self):
self.file_path = os.path.join(os.path.dirname(os.path.dirname(__file__)),'testdata')
# 定义一个json文件读取方法,传json文件名
def read_json(self,json_file):
# 创建空的列表为后面参数化所需格式准备
test_data = []
# 获取json文件的绝对路径
data_path = os.path.join(self.file_path,json_file)
# 打开json文件,模式为只读
with open(data_path,mode='r',encoding='utf8') as f:
# 用json.load() 方法,来处理文件,就是json转dict
json_data = json.load(f)
# print(json_data)
#使用dict的items()方法去循环字典的key 和 value
for k,v in json_data.items():
# print(v)
# 这里准备一个空的列表来放第二层的value数据,为后面参数化准备
v_data = []
循环第二层json文件,即我们需要的数据
for k1,v1 in v.items():
# 这里添加到v_data中
v_data.append(v1)
# print(v1)
# 再把格式转换一下
test_data.append(tuple(v_data))
return test_data
# 测试
if __name__ == '__main__':
ut = Utils()
r = ut.read_json('json_data.json')
print(r)
运行:
写入:
import json
stus={'xiaojun':'123456','xiaohei':'7891','abc':'11111'}
# 写入json文件
with open(file='../testdata/json.json',mode='w',encoding='utf8') as f:
json.dump(stus, f)
运行:
注:
json.load()从文件中读取json字符串,并转换成 dict 数据类型
json.loads()将json字符串转换为字典类型
json.dump()将json格式字符串写到文件中(把dict转换成json字符串格式,然后写入到文件)
json.dumps()将python中的字典dict类型转换为 json字符串类型
总结:json 牵涉到文件处理的就用 不带s的,反之就用带s的
json字符串 --------------- loads() ------------------> dict
dict ------------------- dumps() --------------> json字符串