zoukankan      html  css  js  c++  java
  • (二)数据源处理6-excel数据转换实战(下)

     将结果的所有数据整理如下:

    {'api_case_01':
    [{'测试用例编号': 'api_case_01', '测试用例名称': '获取access_token接口测试', '用例执行': '是', '用例步骤': 'step_01', '接口名称': '获取access_token接口', '请求方式': 'get', '请求头部信息': '', '请求地址': '/cgi-bin/token', '请求参数(get)': '{"grant_type":"client_credential","appid":"wx55614004f367f8ca","secret":"65515b46dd758dfdb09420bb7db2c67f"}', '请求参数(post)': '', '取值方式': '无', '取值代码': '', '取值变量': '', '断言类型': 'body_regexp', '期望结果': '"access_token":"(.+?)"'
    }],
    'api_case_02':
    [{'测试用例编号': 'api_case_02', '测试用例名称': '创建标签接口测试', '用例执行': '否', '用例步骤': 'step_01', '接口名称': '获取access_token接口', '请求方式': 'get', '请求头部信息': '', '请求地址': '/cgi-bin/token', '请求参数(get)': '{"grant_type":"client_credential","appid":"wx55614004f367f8ca","secret":"65515b46dd758dfdb09420bb7db2c67f"}', '请求参数(post)': '', '取值方式': '正则取值', '取值代码': '"access_token":"(.+?)"', '取值变量': 'token', '断言类型': 'json_key_value', '期望结果': '{"expires_in":7200}'},
    {'测试用例编号': 'api_case_02', '测试用例名称': '创建标签接口测试', '用例执行': '否', '用例步骤': 'step_02', '接口名称': '创建标签接口', '请求方式': 'post', '请求头部信息': '', '请求地址': '/cgi-bin/tags/create', '请求参数(get)': '{"access_token":${token}}', '请求参数(post)': '{ "tag" : { "name" : "广东" } } ', '取值方式': '无', '取值代码': '', '取值变量': '', '断言类型': 'json_key', '期望结果': 'tag'
    }],
    'api_case_03':
    [{'测试用例编号': 'api_case_03', '测试用例名称': '删除标签接口测试', '用例执行': '否', '用例步骤': 'step_01', '接口名称': '获取access_token接口', '请求方式': 'get', '请求头部信息': '', '请求地址': '/cgi-bin/token', '请求参数(get)': '{"grant_type":"client_credential","appid":"wx55614004f367f8ca","secret":"65515b46dd758dfdb09420bb7db2c67f"}', '请求参数(post)': '', '取值方式': 'jsonpath取值', '取值代码': '$.access_token', '取值变量': 'token', '断言类型': 'json_key', '期望结果': 'access_token'},
    {'测试用例编号': 'api_case_03', '测试用例名称': '删除标签接口测试', '用例执行': '否', '用例步骤': 'step_02', '接口名称': '创建标签接口', '请求方式': 'post', '请求头部信息': '', '请求地址': '/cgi-bin/tags/create', '请求参数(get)': '{"access_token":${token}}', '请求参数(post)': '{ "tag" : { "name" : "p3p4testddd" } } ', '取值方式': '正则取值', '取值代码': '"id":(.+?),', '取值变量': 'tag_id', '断言类型': 'json_key', '期望结果': ''},
    {'测试用例编号': 'api_case_03', '测试用例名称': '删除标签接口测试', '用例执行': '否', '用例步骤': 'step_03', '接口名称': '删除标签接口', '请求方式': 'post', '请求头部信息': '', '请求地址': '/cgi-bin/tags/delete', '请求参数(get)': '{"access_token":${token}}', '请求参数(post)': '{ "tag":{ "id" : ${tag_id} } }', '取值方式': '无', '取值代码': '', '取值变量': '', '断言类型': 'json_key_value', '期望结果': '{"errcode":0}'}
    ]
    }

     思路分析:转化为:

    ‘case_id':‘api_case_01','case_info':[{'测试用例编号': 'api_case_01', '测试用例名称': '获取access_token接口测试', '用例执行': '是', '用例步骤': 'step_01', '接口名称': '获取access_token接口', '请求方式': 'get', '请求头部信息': '', '请求地址': '/cgi-bin/token', '请求参数(get)': '{"grant_type":"client_credential","appid":"wx55614004f367f8ca","secret":"65515b46dd758dfdb09420bb7db2c67f"}', '请求参数(post)': '', '取值方式': '无', '取值代码': '', '取值变量': '', '断言类型': 'body_regexp', '期望结果': '"access_token":"(.+?)"'
    }]

    例:

    data_convert_02.py
    a_dict = {'小红':[{'book1':'朝花夕拾'},{'book2':'红楼梦'}],
    '小黑':[{'book1':'呐喊'},{'book2':'红楼梦'}]}
    data_list = []
    for key,value in a_dict.items():#同时返回键和值,a_dict.key返回key,a_dict.value返回value

    b_dict = {}
    b_dict['name'] = key
    b_dict['books'] = value
    data_list.append(b_dict)
    print( data_list )

     转换封装:

    # import os
    # from utils.excel_utils import ExcelUtils
    # excel_file_path = os.path.join( os.path.dirname(__file__),'..','data','testcase_infos.xlsx')
    # excel_sheet_name = 'Sheet1'
    #
    # class TestcaseDataUtils:
    # def __init__(self):
    # self.excel_data = ExcelUtils(excel_file_path=excel_file_path,sheet_name=excel_sheet_name)
    #
    # def convert_testcase_data(self):
    # ''' 把excel的所有原始数据转换成符合框架需要的测试用例业务数据 '''
    # testcase_dict = {}
    # for row_data in self.excel_data.get_all_data():
    # testcase_dict.setdefault(row_data['测试用例编号'],[]).append(row_data)
    # return testcase_dict
    # if __name__ == '__main__': #测试
    # testcaseDataUtils = TestcaseDataUtils()
    # test_case_dicts = testcaseDataUtils.convert_testcase_data()
    # # for testcase in test_case_dicts['api_case_01']:
    # for testcase in test_case_dicts['api_case_02']:
    # print(testcase)
    # print(test_case_dicts) #打印所有的数据

    ⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️


    import os
    from utils.excel_utils import ExcelUtils
    # from utils.mysql_utils import MysqlUtils

    excel_file_path = os.path.join( os.path.dirname(__file__),'..','data','testcase_infos.xlsx')
    excel_sheet_name = 'Sheet1'

    class TestcaseDataUtils:
    def __init__(self):
    self.test_data_obj = ExcelUtils(excel_file_path=excel_file_path,sheet_name=excel_sheet_name)
    #self.test_data_obj = MysqlUtils()

    def convert_testcase_data_to_dict(self):
    ''' 把excel的所有原始数据转换成符合框架需要的测试用例业务数据 '''
    testcase_dict = {}
    for row_data in self.excel_data.get_all_data():
    testcase_dict.setdefault(row_data['测试用例编号'],[]).append(row_data)
    return testcase_dict
    def convert_testcase_data_to_list(self):
    ''' 把convert_testcase_data_to_dict产生的数据转换成列表并在每个元素中增加key '''
    all_casedata_list = []
    for key,value in self.convert_testcase_data_to_dict().items():
    case_info_dict = {}
    case_info_dict['case_id'] = key
    case_info_dict['case_step'] = value
    all_casedata_list.append( case_info_dict )
    return all_casedata_list

    if __name__=='__main__':
    testcaseDataUtils = TestcaseDataUtils()
    test_case_lists = testcaseDataUtils.convert_testcase_data_to_list()
    # for testcase in test_case_dicts['api_case_01']:
    # print( testcase )
    for t in test_case_lists:
    print( t )
    #print(test_case_lists[0]['case_step'][0]['请求参数(get)'])

    数据源处理:
    1、config读取的封装
    2、excel存放测试数据转换到代码中的处理
    合并单元格 == 》 封装excel_utils == 》把excel数据转换成测试用例业务数据
    (setdefault() 为了把用例步骤整合到对应的测试编号中)==》封装testcase_data_utils
    ==》形态变化:
    [{},{}] == {"":[],"":[]} == [{"case_id":'','case_step':[]},...]
    回忆滋润坚持
  • 相关阅读:
    VUE vue和element框架搭配实现导航跳转,底部导航跳转页面
    【HDFS篇14】HA高可用 --- Federation架构设
    【HDFS篇13】HA高可用 --- YARN-HA集群配置
    【HDFS篇12】HA高可用 --- HDFS-HA集群配置
    【HDFS篇11】HA高可用
    【HDFS篇10】DataNode相关概念
    【HDFS篇09】集群安全模式
    【HDFS篇08】NameNode故障处理
    【HDFS篇07】NameNode和SecondearyNameNode
    【HDFS篇06】HDFS数据读写流程
  • 原文地址:https://www.cnblogs.com/james5d/p/14100639.html
Copyright © 2011-2022 走看看