Python 之json文件处理成pytest.mark.parametrize() 参数化所需格式

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字符串

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值