記錄python接口自動化測試--從excel中讀取params參數傳入requests請求不生效問題的解決過程(第七目)


在第六目把主函數寫好了,先來運行一下主函數

從截圖中可以看到,請求參數打印出來了,和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()

這下能夠正確執行了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM