从接口自动化测试框架设计到开发(二)操作json文件、重构json工具类、获取常量、获取接口数据、封装get和post基类

用例模板里的请求数据多,看起来很乱,所以可以通过访问另外一个文件的方式获取请求数据

把请求数据都放在一个json文件中

 取出login的内容:

import json

fp = open('G:/uni_test/data/请求数据.json')   #打开文件
data = json.load(fp)   #加载文件
print(data['login'])   #取出login的数据

重构json工具类

#operationjson.py
# -*- coding: utf-8 -*- # @Author: jiujiu # @Date: 2020-03-04 15:40:55 # @Last Modified time: 2020-03-05 14:42:39
import json class operation_json: def __init__(self): self.data = self.read_data() #读取json文件 def read_data(self): with open('G:/uni_test/data/请求数据.json') as fp: #自动会关闭文件,不用再close.() data = json.load(fp) #加载文件 return data def get_data(self,requestdata=None): if requestdata == None: return '' return self.data[requestdata] # 写入json # def write_data(self, data=None): # with open("G:/uni_test/data/请求数据.json", 'w') as fp: # fp.write(json.dumps(data)) if __name__ == '__main__': operas = operation_json() # print(operas.read_data()) print(operas.get_data('login'))

运行结果

根据每个字段的行数给模板定义一个固定变量

#data_config.py
#
-*- coding: utf-8 -*- #TypeError: test() takes 0 positional arguments but 1 was given 遇到这个报错信息,把函数默认加上self参数 class global_var: Id = '0' request_name = '1' url = '2' run = '3' request_way = '4' header = '5' case_depend = '6' data_depend = '7' filid_depend ='8' data = '9' expect = '10' result = '11' def get_id(self): return global_var.Id def get_url(self): return global_var.url def get_run(self): return global_var.run def get_request_way(self): return global_var.request_way def get_header(self): return global_var.header def get_case_depend(self): return global_var.case_depend def get_data_depend(self): return global_var.data_depend def get_filid_depend(self): return global_var.filid_depend def get_data(self): return global_var.data def get_expect(self): return global_var.expect def get_result(self): return global_var.result def get_header_value(self): header = { 'header':'1234', 'cookie':'dajiujiu' }

封装获取变量数据

#get_data.py
#
-*- coding: utf-8 -*- # @Author: jiujiu # @Date: 2020-02-27 17:32:48 # @Last Modified time: 2020-03-05 14:40:11 import sys sys.path.append("G:/uni_test") from util.operation_excel import OperationExcel from data.data_config import global_var from util.operationjson import operation_json class GetData: """docstring for GetData""" def __init__(self): self.opera_excel = OperationExcel() #之前遇到直接调用data.config.get_url()报错说data.config未定义,就实例化一下global_var类 self.dataconfig = global_var() self.opera_json = operation_json() #去获取excel行数,就是我们的case个数 def get_case_lines(self): return self.opera_excel.get_lines() #获取是否执行 #list indices must be integers,not str 遇到这个错误,在数据之前加上int def get_is_run(self,row): flag = None col = int(self.dataconfig.get_run()) run_model = self.opera_excel.get_cell_value(row,col) if run_model == 'yes': flag = True else: flag = False return flag #获取是否需要header def is_header(self,row): col = int(self.dataconfig.get_header()) header = self.opera_excel.get_cell_value(row,col) if header =='yes': return self.dataconfig.get_header_value() else: return None #获取请求方式 def get_request_method(self,row): col = int(self.dataconfig.get_request_way()) request_method = self.opera_excel.get_cell_value(row,col) return request_method #获取url def get_request_url(self,row): col = int(self.dataconfig.get_url()) url = self.opera_excel.get_cell_value(row,col) return url #获取请求数据 def get_request_data(self,row): col = int(self.dataconfig.get_data())#第9列 data = self.opera_excel.get_cell_value(row,col)#传入行数,取值 if data: return data else: return None #通过获取关键字拿到data数据 def get_data_for_json(self,row): data = self.get_request_data(row) #取到的值 request_data = self.opera_json.get_data(data)#取到的值传入get_data中,然后通过get_read读取到值 return request_data #返回请求数据 #获取预期结果 def get_expect_data(self,row): col = int(self.dataconfig.get_expect()) get_expect = self.opera_excel.get_cell_value(row,col) return get_expect

封装get和post基类

#run_method.py
#
-*- coding: utf-8 -*- # @Author: jiujiu # @Date: 2020-03-04 16:18:07 # @Last Modified time: 2020-03-04 16:18:07 import requests class RunMethod: def post_main(self,url,data,header): res = None if header != None: res = requests.post(url=url,data=data,header=None) else: res = requests.post(url=url,data=data) return res def get_main(self,url,data=None,header=None): res = None if header != None: res = requests.get(url=url,data=None,header=header) else: res = requests.get(url=url,data=data) return res def run_main(self,method,url,data=None,header=None): res = None if method == 'post': res = self.post_main(url,data,header) else: res = self.get_main(url,data,header) return res
原文地址:https://www.cnblogs.com/dydxw/p/12372982.html