通常,在我們的專案中,我們的介面測試需求一般都是建構不同的請求數據,然後發送請求到接口,拿到接口返回後,對返回的欄位進行擷取和校驗,最後將結果存放在excel表格中方便查閱。介面一般是http或https請求,發送的結構一般是json body或json結合一些文件附件,請求的回傳結果都是json格式,我們的測試case可以用Excel或資料庫保存,結果可以保存在資料庫或直接存在Excel中,以下將具體拆解需求及逐步介紹實作過程。
建構每次發送的請求內容和向介面自動發送請求是建構自動化測試腳本的核心,我們實現這一步驟主要是使用python 的requests函式庫,下面詳細做一下詳細介紹。
發送請求前,我們需要明確請求的body,我們的body為json,具體內容如下:
我們可以把這個當作模板儲存為text.json檔案當作模板,這樣可以直接讀取為後面建構請求體做準備。這一步我們可以這樣處理,這裡藉助了yaml包,可以把json轉換成字典,也可以使用python自帶的json,效果一樣。
取得到了請求體模板後,我們得到了變數request_body,這是一個字典類型的數據,我們就可以對其進行參數化,以此構造我們需要的請求體了,例如我們要對每次請求的請求id、用戶名、以及text的內容做修改,可以這樣操作,左邊是需要修改的字段,右邊是我們需要的變數。
建構好要傳送的數據,就可以準備發送請求了,在發送請求之前我們還有一點工作要做,那就是設定請求介面的一些參數和一些請求頭的定制,這裡我們簡單舉例如下:
我們定制了請求參數和請求頭,就可以發送類似如下URL的請求:
我們再把之前建構好的body加上,再用requests庫的post方法發送請求,這裡用到了方法中的data參數,它接收的是一個json,因此在發送之前對之前的字典變數還需做下轉換再發送,這裡用python自帶的json庫,使用其中的dumps方法即可將字典轉換為json:
至此,一個基本的http post請求就發送完成了,注意到,我們有一個名為r 的Response 物件。我們可以從這個物件中獲取所有我們想要的資訊。
前面我們介紹了最簡單的http post請求,在此基礎上,我們有時還需要一些更複雜的請求,例如帶一個文件,https請求等,下面簡單講解一下如何實現:
例如我們想要發送一個帶有格式為pcm的音頻文件到接口中,並且接口是https的。
注意到,發送https請求需要做ssl認證,在方法中使用verify參數,這個參數預設值是True,一般不需要驗證的話,需要將這個置為False。還有一個需要注意的地方是,我們設定了一個timeout,防止請求過程逾時,導致程式無回應。
在發送請求的步驟裡我們有一個名為 r 的 Response 物件。我們可以從這個物件中獲取所有我們想要的資訊。
取得內容有以下幾種方法,我們可以依照自己的需求來使用:
得到的一般為json格式的文字:
我們可以對json進行轉換,使用json.loads方法,將一個json物件轉換為python的字典,這樣方便獲取其中我們想要的一些字段,這一步很簡單,就不做詳細介紹了。
首先我們來看看我們的case,我們的case是使用Excel進行編寫的,具體如下:
如何讀取Excel,取得其中的case呢?我們使用了python中的pandas函式庫。這個函式庫很強大,有很多處理資料的方法,我們在這只使用其中讀取excel的方法,具體程式碼如下:
這樣我們就將表格資料轉換了一個list,每個list中是一個字典格式,也就是我們的case,具體格式如下:
這樣做的目的是我們可以將表頭和每個case做一個映射,形成一個字典,這樣可以更有彈性操作case以及做資料比較。
有了case list,加上之前我們發送請求和獲取結果的步驟就可以進行批量接口測試了,這裡使用一個for循環就可以批量跑起來了:
我們將每次回傳的結果,按照case的格式拼接成一個字典,就是我們的結果數據,將每個結果字典再儲存到一個列表中,就得到了整個的結果字典列表,我們將它命名為case_result_list,這時,我們再次使用pandas庫,可以把這個列表轉換為dataframe格式:
之後我們將dataframe保存為excel文件:
至此,我們已經完成了從取得case到發請求取得結果,保存結果的全部流程。
經過以上的操作,我們已經完成了批量發送請求,獲取結果的過程,如果我們需要對結果單元格做一些處理,例如標紅加粗等操作,使測試結果中的錯誤訊息更加明顯,需要怎麼操作?這裡我們使用了python中的openpyxl函式庫。這個函式庫也是可以對Excel表格進行讀寫操作,並且可以插入一些公式和樣式。我們在這裡使用的是樣式操作,我們根據單元格中的資料對結果進行標紅加粗操作:
最後得到的測試結果如下,透過使用openpyxl ,我們還可以在結果中追加行,增加一些測試結果的統計信息,如case數、error數,錯誤率正確率等。
#以上就是一次完整的介面自動化測試腳本搭建,實現自動請求、取得結果、資料比較分析,匯出結果到Excel等功能,每個步驟都比較簡單,可以快速建置出滿足需求的自動化測試腳本,方面快速驗證服務端介面。
其中使用的requests函式庫、pandas函式庫是在python常用的函式庫,功能很強大,後續大家可以參考其官方文件進行深入了解。
以上是使用Python快速建構介面自動化測試腳本實戰總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!