Exemplo n.º 1
0
 def get_result_for_data_label(self, data_label, json_data, index=0):
     """
 # data_label: 数据的标签, 如items
 # json_data: 字典格式的json数据
 # index: 需要查找的数据的索引,默认值0代表查找第一个数据
 # 功能:返回指定的index的items里面的数据
     """
     if data_label in json_data.keys():
         if type(json_data[data_label]) == dict:
             return json_data[data_label]
         elif type(json_data[data_label]) == list:
             return json_data[data_label][index]
     else:
         for key in json_data.keys():
             if type(json_data[key]) == dict:
                 data = self.get_result_for_data_label(data_label, json_data[key], index)
                 if data:
                     return data
                     # break
             elif type(json_data[key]) == list:
                 for item in json_data[key]:
                     data = self.get_result_for_data_label(data_label, item, index)
                     if data:
                         return data
                         # break
     raise raiseExceptions("data label is not found!")
Exemplo n.º 2
0
 def get_json_result(self, url, data=None, headers=None, ssl_connection=False):
     """
     # url: 测试的url
     # data: url请求时发送的数据
     # headers: url请求时发送的消息头
     # ssl_connection: 是否为https的连接方式
     # 功能:获取json格式的数据
     """
     if data:
         data = urllib.urlencode(data)
         if "?" not in url:
             url = url + "?"
         url = url + data
     if headers:
         if type(headers) == unicode:
             headers = eval(headers)
         req = urllib2.Request(url, headers=headers)
     else:
         req = urllib2.Request(url)
     if ssl_connection:
         gcontext = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
         # context = ssl._create_unverified_context()
         content = eval(urllib2.urlopen(req, context=gcontext).read())
     else:
         content = eval(urllib2.urlopen(req).read())
     if type(content) == dict:
         return content
     else:
         raise raiseExceptions("content is not json!\n" + content)
Exemplo n.º 3
0
 def compare_all_keywords_for_data_label(self, lists):
     """
     # lists: 所有数据的关键字的集合,如items字段对应的所有数据的关键字的集合
     # 功能:对比所有的关键字集合是不是一样
     """
     if lists.count(lists[0]) == len(lists):
         return True
     else:
         raise raiseExceptions("the keywords for data label is not the same!")
Exemplo n.º 4
0
 def post_url_and_get_result(self, url, data=None, headers=None, ssl_connection=False):
     if headers:
         req = urllib2.Request(url, headers=headers)
     else:
         req = urllib2.Request(url)
     if ssl_connection:
         gcontext = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
         # context = ssl._create_unverified_context()
         content = eval(urllib2.urlopen(req, data=data, context=gcontext).read())
     else:
         content = eval(urllib2.urlopen(req, data=data).read())
     if type(content) == dict:
         return content
     else:
         raise raiseExceptions("content is not json!\n" + content)
Exemplo n.º 5
0
 def get_data_label_keywords(self, json_data, data_label, used_once=True, keywords=[], all=False):
     """
     # data_label: 数据的标签, 如items
     # json_data: 字典格式的json数据
     # used_once: 第一次调用的时候,可以不设置此参数,第二次或者重复调用是,used_once请设置为False
     # keywords: 不用设置这个参数,keyword只做内部逻辑使用
     # all: True的时候返回所有的data_label数据的关键字,如items对应的所有数据的关键字,格式为[[], [], []];False的时候只返回data_label数据的第一个数据的所有关键字,如items对应的第一条数据的所有关键字,格式为[]
     # 功能:返回items字段的所有数据的关键字或者只返回一条数据的关键字
     """
     if used_once:
         pass
     else:
         keywords = []
         used_once = True
     if data_label in json_data.keys():
         if type(json_data[data_label]) == dict:
             if all:
                 keywords.append(json_data[data_label].keys())
             else:
                 keywords += json_data[data_label].keys()
         elif type(json_data[data_label]) == list:
             for item in json_data[data_label]:
                 if all:
                     keywords.append(item.keys())
                 else:
                     keywords += item.keys()
                     break
         return keywords
     else:
         for key in json_data.keys():
             if type(json_data[key]) == dict:
                 if all:
                     keywords = self.get_data_label_keywords(json_data[key], data_label, used_once, keywords, all=True)
                 else:
                     keywords = self.get_data_label_keywords(json_data[key], data_label, used_once, keywords)
                 if keywords:
                     return keywords
                     # break
             elif type(json_data[key]) == list:
                 for item in json_data[key]:
                     if all:
                         keywords = self.get_data_label_keywords(item, data_label, used_once, keywords, all=True)
                     else:
                         keywords = self.get_data_label_keywords(item, data_label, used_once, keywords)
                     if keywords:
                         return keywords
                         # break
     raise raiseExceptions("data label is not found!")
Exemplo n.º 6
0
 def get_keyword_result(self, json_data, keyword):
     """
     # json_data: 字典格式的json数据
     # keywords: json数据里面的关键字,不一定是items里面字段,可以是外层的,如msg,status;如果是items里面的字段,会返回第一条数据里面这个字段的值
     # 功能:获取指定关键字的值
     """
     if keyword in json_data.keys():
         return json_data[keyword]
     else:
         for key in json_data.keys():
             if type(json_data[key]) == dict:
                 return_result = self.get_keyword_result(json_data[key], keyword)
                 if return_result or (return_result != False and return_result != None) or return_result == 0:
                     return return_result
                     # break
             elif type(json_data[key]) == list:
                 for item in json_data[key]:
                     return_result = self.get_keyword_result(item, keyword)
                     if return_result or (return_result != False and return_result != None) or return_result == 0:
                         return return_result
                         # break
     raise raiseExceptions("keyword " + keyword + " is not found!")
Exemplo n.º 7
0
 def get_all_results_for_data_label(self, data_label, json_data):
     """
     # data_label: 数据的标签, 如items
     # json_data: 字典格式的json数据
     # 功能:返回items的所有数据
     """
     if data_label in json_data.keys():
         return json_data[data_label]
     else:
         for key in json_data.keys():
             if type(json_data[key]) == dict:
                 data = self.get_all_results_for_data_label(data_label, json_data[key])
                 if data:
                     return data
                     # break
             elif type(json_data[key]) == list:
                 for item in json_data[key]:
                     if type(item) == dict:
                         data = self.get_all_results_for_data_label(data_label, item)
                         if data:
                             return data
                             # break
     raise raiseExceptions("data label is not found!")
Exemplo n.º 8
0
 def get_keyword_results(self, json_data, data_label, keyword):
     """
     # json_data: 字典格式的json数据
     # data_label: 数据的标签, 如items
     # keywords: json数据里面items字段里面的某一个字段
     # 功能:获取指定关键字的所有值,例如items里面name字段的所有值
     """
     if data_label in json_data.keys():
         values = []
         for item in json_data[data_label]:
             values.append(item[keyword])
         return values
     else:
         for key in json_data.keys():
             if type(json_data[key]) == dict:
                 if self.get_keyword_results(json_data[key], data_label, keyword):
                     return self.get_keyword_results(json_data[key], data_label, keyword)
                     # break
             elif type(json_data[key]) == list:
                 for item in json_data[key]:
                     if self.get_keyword_results(item, data_label, keyword):
                         return self.get_keyword_results(item, data_label, keyword)
                         # break
     raise raiseExceptions("keyword or data label is not found!")