1. 程式人生 > 實用技巧 >python 按行取excle資料作為介面請求資料

python 按行取excle資料作為介面請求資料

1、excle檔案內容示例:

獲取excle資料來源碼:

 1 import pandas as pd
 2 
 3 def get_all_excle_data(excle_file, sheet_name, row):
 4     #固定excle某列欄位的資料型別,防止excle整數變為浮點數
 5     converters = {
 6         'employeeId':str,
 7         'authCode':str,
 8         'orderSource':str
 9     }
10    # 將excle的資料提取出來 
11     data = pd.DataFrame(pd.read_excel(excle_file, sheet_name=sheet_name, converters = converters ,na_values='
NULL',)) 12 13 # 將excle裡面單元格值為空的值都替換為NULL 14 data = data.fillna('') 15 # excle所有列名字 16 all_para_col = list(set(data)) 17 18 #生成請求字典資訊 19 params = {} 20 for v in all_para_col: 21 params[v] = data.loc[row,v] 22 23 # 請求地址 和 key 24 url = data.loc[row, 'host
'] + data.loc[row, 'path'] 25 key = data.loc[row, 'key'] # key的值 26 27 result = { 28 'testCases': data.loc[row,'testCases'], 29 'host': data.loc[row,'host'], 30 'row': data.loc[row,'row'], 31 'params': params, 32 } 33 return result

訂單查詢介面用excle的資料作為請求資料:

 1 import requests
 2 from A_shop.utils.get_excle_data import get_all_excle_data
 3 from A_shop.utils.md5_python import md5Python as md5
 4 from A_shop.utils.date_random import get_random
 5 from A_shop.utils.tools import del_null
 6 from A_shop.log.logger import Logger
 7 from A_shop.utils.get_excle_path import get_excle_path
 8 import json
 9 
10 def pi_query(excle_file,sheet_name,row):
11     # 獲取介面的資料
12     excle_data = get_all_excle_data(excle_file, sheet_name, row)
13     url = excle_data['host'] + "/open/pay/query"
14     key = excle_data['key']
15     params = excle_data['params']
16     random = get_random()
17 
18     params = {
19         "appId" : params['appId'],
20         "merchantCode" :  params['merchantCode'],
21         "random" : random,
22         "outTradeNo" : params['outTradeNo']
23     }
24 
25     params = del_null(params)
26     params["sign"] = md5.md5_sign(params, key)
27 
28     # 介面請求
29     r = requests.post(url, data=params)
30 
31     # 返回介面的請求和返回資訊
32     result = {
33         'req': params,
34         'res': r.json(),
35         'url': url
36     }
37     return result
38 
39 if __name__ == '__main__':
40     log = Logger("info")
41     excle_file = get_excle_path('refund_data.xlsx')
42     sheet_name = 'pi_test'
43 
44     for row in range(3):
45         result = pi_query(excle_file, sheet_name, row)
46         log.info("支付查詢請求地址:" + result['url'])
47         log.info("支付查詢請求資訊:" + str(json.dumps(result['req'], ensure_ascii=False)))
48         log.info("支付查詢返回資訊:" + str(json.dumps(result['res'], ensure_ascii=False)))
49         print(result['res']["msg"])
50         assert result['res']['code'] == "SUCCESS"
51         assert result['res']['msg'] == "訂單已支付"

這樣做到資料來源與原始碼分開管理,一套程式碼,只用改excle的請求資料就可以測試不同的場景