zoukankan      html  css  js  c++  java
  • 从接口自动化测试框架设计到开发(二)操作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
  • 相关阅读:
    qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method
    使用 acl_cpp 的 HttpServlet 类及服务器框架编写WEB服务器程序(系列文章)
    C编译器剖析PDF文档及UCC编译器162.3
    深入浅出NodeJS——数据通信,NET模块运行机制
    看AngularJS
    如何编写高效的jQuery代码
    Express安装入门与模版引擎ejs
    使用SeaJS实现模块化JavaScript开发
    RequireJS 入门指南
    RequireJS
  • 原文地址:https://www.cnblogs.com/dydxw/p/12372982.html
Copyright © 2011-2022 走看看