今天寫了個測試的代碼,結果在執行test_register.py文件在調用readexcle.py的時候一直報錯TypeError: 'ExcelData' object is not iterable,最后發現是test_register.py模塊調用readexcle.py模塊時,忘記調用方法了,導致返回值有誤,折騰了半天,是個教訓。
下面是readexcle.py模塊(讀取excle內的數據並返回讀取到的數據):
1 import xlrd 2 3 class ExcelData(): 4 def __init__(self,data_path,sheetname): 5 self.data_path = data_path # excle表格路徑 6 self.sheetname = sheetname # excle表格內sheet 7 self.data = xlrd.open_workbook(self.data_path) # 打開excle表格 8 self.table = self.data.sheet_by_name(self.sheetname) # 切換到相應sheet 9 self.keys = self.table.row_values(0) # 第一行作為key值 10 self.rowNum = self.table.nrows # 獲取表格行數 11 self.colNum = self.table.ncols # 獲取表格列數 12 # print(self.rowNum) 13 # print(self.colNum) 14 15 def readExcle(self): 16 if self.rowNum<2: 17 print("excle內數據行數小於2") 18 else: 19 L = [] 20 for i in range(1,self.rowNum): 21 sheet_data = {} 22 for j in range(self.colNum): 23 sheet_data[self.keys[j]] = self.table.row_values(i)[j] 24 L.append(sheet_data) 25 #print(type(L)) 26 return L 27 28 if __name__ == '__main__': 29 data_path = "F:\\KEJINSUO_interface\\Case\\interface_data.xlsx" 30 sheetname = "注冊" 31 get_data = ExcelData(data_path,sheetname) 32 print(get_data.readExcle())
下面是test_register.py模塊(調用readexcle.py模塊,使用readexcle.py返回值做參數):
1 import requests 2 import json 3 import unittest 4 from readexcle import ExcelData 5 6 class Regist(unittest.TestCase): 7 def setUp(self): 8 self.headers = {"Content-Type":"application/json"} 9 self.data_path = "F:\\KEJINSUO_interface\\Case\\interface_data.xlsx" 10 self.sheetname = "注冊" 11 self.shuju = ExcelData(self.data_path,self.sheetname).readExcle() #錯誤在此行,未調用readExcle方法 12 13 def test_regist(self): 14 for a in self.shuju: 15 self.url = "http://test.jkkjs.cn:44444/api/register/createUser" 16 self.pars = {"data": { 17 "mobile":a['mobile'], 18 "password": a['password'], 19 "verifyCode":a['verifyCode'] 20 } 21 } 22 self.par_json = json.dumps(self.pars) 23 res = requests.post(self.url,data=self.par_json,headers=self.headers) 24 #根據返回數據判斷登錄結果 25 if "注冊成功" in res.text: 26 print("注冊成功") 27 elif "手機號碼已注冊" in res.text: 28 print("手機號碼已注冊") 29 elif "參數錯誤" in res.text: 30 print("提交參數錯誤")