數據源處理5-excel數據轉換實戰(上)

把excel_oper02.py

裏面實現的:通過字典的方式獲取所有excel數據.放進utils:

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

 utils:

def get_all_data(self):
''' 把excel數據轉換成如下格式
[{"字段名1":"字段值1","字段名2":"字段值2"...},{}]
'''
excel_list_data = []
row_head = self.sheet.row_values(0) # ==字典的key 首行的數據
for row_num in range(1, self.get_row_count()):
row_dict = {}
for col_num in range(self.get_column_count()):
row_dict[row_head[col_num]] = self.get_merge_cell_value(row_num, col_num) #獲取一個單元格的數據
excel_list_data.append(row_dict)
return excel_list_data

數據轉換:

data_convert_01.py
a = {'one':1,'two':2,'three':3}
a.setdefault('four',4) #設置默認值 key不存在新增鍵值對
print( a )
print( a.setdefault('two',10) ) # key存在 不會修改內容
print( a )

data_list = [{'事件': '學習python編程', '步驟序號': 'step_01', '步驟操作': '購買微課', '完成情況': 100.0},
{'事件': '學習python編程', '步驟序號': 'step_02', '步驟操作': '搭建環境', '完成情況': 100.0},
{'事件': '學習python編程', '步驟序號': 'step_03', '步驟操作': '做筆記', '完成情況': 90.0},
{'事件': '學習python編程', '步驟序號': 'step_04', '步驟操作': '應用', '完成情況': 80.0},
{'事件': '學習java編程', '步驟序號': 'step_01', '步驟操作': '購買微課', '完成情況': 100.0},
{'事件': '學習java編程', '步驟序號': 'step_02', '步驟操作': '搭建環境', '完成情況': 100.0},
{'事件': '學習java編程', '步驟序號': 'step_03', '步驟操作': '做筆記', '完成情況': 90.0},
{'事件': '學習java編程', '步驟序號': 'step_04', '步驟操作': '應用', '完成情況': 80.0}]
data_dict = {}
for d in data_list:
data_dict.setdefault(d['事件'],[]).append( d ) # python 精髓代碼
print( data_dict )

testcase_infos.xlsx數據:

 

 

 

結果如下:

/usr/bin/python3 /Users/w550856/PycharmProjects/JKZDH_KJ/utils/excel_utils.py
{'測試用例編號': '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', '測試用例名稱': '創建標籤接口測試', '用例執行': '否', '用例步驟': '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', '測試用例名稱': '刪除標籤接口測試', '用例執行': '否', '用例步驟': '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}'}

 

數據轉換文件:testcase_data_utils.py

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)

/usr/bin/python3 /Users/w550856/PycharmProjects/JKZDH_KJ/utils/testcase_data_utils.py
{'測試用例編號': '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'}

Process finished with exit code 0

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章