Python接口自动化—数据依赖(根据json文件已知的key,vaule获取对应数组的key,value值)

json数据

{"data":
[
  {"id":195,"projectName":"22","sliceName":"","selectAll":true,
    "analysisColumn":
    [
      {"id":"115484651778347008","fieldName":"d_h7_ltf","isReady":true,"errorCount":2,"fieldType":"NUMERIC"}
    ]
  },
  {"id":174,"projectName":"111","sliceName":"","selectAll":true,
    "analysisColumn":
    [
      {"id":"105352848560230400","fieldName":"r2b_isphi2_ref","isReady":true,"errorCount":1,"fieldType":"NUMERIC"},
      {"id":"105352848560230401","fieldName":"actual_pass_counter","isReady":true,"errorCount":2,"fieldType":"NUMERIC"},
      {"id":"105352848560230402","fieldName":"r2_exit_rt_speed","isReady":true,"errorCount":1,"fieldType":"NUMERIC"}
    ]
  }
],
  "success":true,"requestId":null,"resultCode":null,"resultMsg":null,"solution":null
}

操作json文件代码

#coding:utf-8
import json
import requests
import operator
import getcwd
from logs.get_log import get_log
#读取json文件数据
class OperationJson:
    def __init__(self,file_path=None):
        self.path = getcwd.get_cwd()
        if file_path==None:
            self.file_path='../dataconfig/rigang_data/request_monitor_add.json'
        else:
            self.file_path = file_path
        self.data=self.read_data(self.file_path)
   #读取请求数据json文件
    def read_data(self,path):
       with open(path,'r') as fp:
           #load将str转成dict,用于读取json文件,dumps()反之用法
           # print("fp", fp, "type(fp) is:", type(fp))
           data=json.load(fp)
           # self.log_msg.info('请求数据json文件内容:%s'%data)
       return data
    #根据关键字获取请求数据
    def get_data(self,id):
        # self.log_msg.info('根据关键字获取请求数据json文件内容:%s' % id)
        return self.data[id]

    # 获取期望结果json数据
    def get_json_data(self,json_path,id=None):
        json_data=None
        if id==None:
            json_data = self.read_data(json_path)
            # self.log_msg.info('获取期望结果id为空,返回的所有数据是%s' % json_data)
            return json_data
        else:
            json_data=self.read_data(json_path)
            json_data=json_data[id]
            # self.log_msg.info('获取期望结果id为:%s,返回数据是%s' % (id,json_data))
        return json_data
    #获取实际结果写入实际结果json
    def write_data(self,data,json_path):
        with open(json_path,'w',encoding='utf-8') as fp:
            rdata=fp.write(json.dumps((data),ensure_ascii=False,indent=2))
            # self.log_msg.info('获取的实际结果数据是:%s,写入的文件是:%s' % (data, json_path))
    #根据key,value值找到json对应数组:-针对曲线分析接口测试-添加,删除依赖接口
    def find_list_dict(self,key,value,list_key,json_path):
        json_data=self.read_data(json_path)
        datas=json_data[list_key]
        i=None
        #遍历数组
        for i in range(0,len(datas)):
            # 取每个数组为字典,定义为迭代器
            items=datas[i].items()
            #遍历字典
            for k,v in items:
                #判断是你需要的key,value值
                if k==key and v==value:
                    # print(datas[i])
                    return datas[i]
    #获取需要使用的values,key_r:需要得到的值; list_key:json数据根据对应的key值list_key获取的该key数组;  key,value:根据这个判断获取最终值数组的位置; json_path:json的路径
    def find_list_dict_for_value(self,key_r,list_key,key,value,json_path):
        data=self.find_list_dict(key,value,list_key,json_path,)
        return data[key_r]


if __name__ == '__main__':
    op=OperationJson()
    a=op.find_list_dict_for_value('id','data','projectName','111','../dataconfig/checker_data/actual_checker_getSimpleList.json')
    print(a)


运行结果
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值