在第六目把主函數寫好了,先來運行一下主函數
從截圖中可以看到,請求參數打印出來了,和excel中填寫的一致
但是每個接口的返回值卻都是400,提示參數沒有傳進去,開始不知道是什么原因(因為excel中params的值已經按照requests的要求寫成了字典格式);
后來突然想到一個原因:python從excel中解析出來的數據類型不是字典!!,所以無法傳遞給requests當做請求參數
接着做了如下實驗:
運行結果:
果然,數據類型是‘str’,不是‘dict’
知道原因就好辦了,利用json庫的loads方法將數據反序列化
所以,主函數做如下調整
# coding:utf-8 from base.run_method import RunMain from util.handle_excel import * import json class RunTestCase: def __init__(self): self.Runmain = RunMain() # 實例化調用get/post請求基類 self.data = HandleExcel() # 實例化操作excel文件類 def go_run(self): rows_count = self.data.get_rows() # 獲取excel行數 for i in range(1,rows_count): # 利用行數進行迭代處理每個接口 url = self.data.get_value(i, get_url()) # 循環獲取url的值 # print(url) method = self.data.get_value(i, get_method()) # 循環獲取method的值 data = json.loads(self.data.get_value(i, get_params())) # 循環獲取請求參數,並將得到的數據反序列化 # data = self.data.get_value(i, get_params()) # 循環獲取請求參數 print(data) is_run = self.data.get_value(i, get_priority()) # 獲取是否運行,即判斷excel中priority是不是"H" if is_run == 'H': res = self.Runmain.run_main(url, method, data) # 調用get/post主函數 print(res) if __name__ == '__main__': run = RunTestCase() run.go_run()
這下能夠正確執行了