自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用Python快速搭建接口自動化測試腳本實戰(zhàn)總結

開發(fā) 前端
本文將介紹如何使用python快速進行http/https接口自動化測試腳本搭建,實現(xiàn)自動請求、獲取結果、數(shù)據(jù)對比分析,導出結果到Excel等功能,包括python的requests、pandas、openpyxl等庫的基本使用方法。

?測試需求介紹

通常,在我們的項目中,我們的接口測試需求一般都是構造不同的請求數(shù)據(jù),然后發(fā)送請求到接口,拿到接口返回后,對返回的字段進行提取和校驗,最后將結果存放在excel表格中方便查閱。接口一般是http或https請求,發(fā)送的結構一般是json body或json結合一些文件附件,請求的返回結果都是json格式,我們的測試case可以用Excel或者數(shù)據(jù)庫保存,結果可以保存在數(shù)據(jù)庫或者直接存在Excel中,下面將具體拆解需求及逐步介紹實現(xiàn)過程。

請求體的定制和發(fā)送請求

構造每次發(fā)送的請求內容和向接口自動發(fā)送請求是構造自動化測試腳本的核心,我們實現(xiàn)這一步驟主要是使用python 的requests庫,下面詳細做一下詳細介紹。

1.發(fā)送簡單的http post請求

發(fā)送請求前,我們需要明確請求的body,我們的body為json,具體內容如下:

我們可以把這個作為模板保存為text.json文件作為模板,這樣可以直接讀取為后面構造請求體做準備。這一步我們可以這樣處理,這里借助了yaml包,可以把json轉換為字典,也可以使用python自帶的json,效果一樣。

獲取到了請求體模板后,我們得到了變量request_body,這是一個字典類型的數(shù)據(jù),我們就可以對其進行參數(shù)化,以此構造我們需要的請求體了,例如我們要對每次請求的請求id、用戶名、以及text的內容做修改,可以這樣操作,左邊是需要修改的字段,右邊是我們需要的變量。

構造好要發(fā)送的數(shù)據(jù),就可以準備發(fā)送請求了,在發(fā)送請求之前我們還有一點工作要做,那就是設置請求接口的一些參數(shù)和一些請求頭的定制,這里我們簡單舉例如下:

我們定制了請求參數(shù)和請求頭,就可以發(fā)送類似如下URL的請求:

我們再把之前構造好的body加上,再用requests庫的post方法發(fā)送請求,這里用到了方法中的data參數(shù),它接收的是一個json,因此在發(fā)送之前對之前的字典變量還需做下轉換再發(fā)送,這里用python自帶的json庫,使用其中的dumps方法即可將字典轉換為json:

至此,一個基本的http post請求就發(fā)送完成了,注意到,我們有一個名為 r 的 Response 對象。我們可以從這個對象中獲取所有我們想要的信息。

2.更加復雜的請求

前面我們介紹了最簡單的http post請求,在此基礎上,我們有時還需要一些更加復雜的請求,比如帶一個文件,https請求等,下面簡單講解一下如何實現(xiàn):

比如我們想要發(fā)送一個帶有格式為p?cm的音頻文件到接口中,并且接口是https的。

注意到,發(fā)送https請求需要做ssl認證,在方法中使用verify參數(shù),這個參數(shù)默認值是True,一般不需要驗證的話,需要將這個置為False。還有一個需要注意的地方是,我們設置了一個timeout,防止請求過程超時,導致程序無響應。

對請求返回數(shù)據(jù)進行關鍵數(shù)據(jù)抓取

在發(fā)送請求的步驟里我們有一個名為 r 的 Response 對象。我們可以從這個對象中獲取所有我們想要的信息。

獲取內容有如下幾種方法,我們可以根據(jù)自己的需要來使用:

得到的一般為json格式的文本:

我們可以對json進行轉換,使用json.loads方法,將一個json對象轉換為python的字典,這樣方便獲取其中我們想要的一些字段,這一步很簡單,就不做詳細介紹了。

如何執(zhí)行case和存儲測試結果

首先我們看一下我們的case,我們的case是使用Excel進行編寫的,具體如下:

1080×112 39.8 KB

如何讀取Excel,獲取其中的case呢?我們使用了python中的pandas庫。這個庫很強大,有很多處理數(shù)據(jù)的方法,我們在這只使用其中讀取excel的方法,具體代碼如下:

這樣我們就將表格數(shù)據(jù)轉換了一個list,每個list中是一個字典格式,也就是我們的case,具體格式如下:

這樣做的目的是我們可以將表頭和每個case做一個映射,形成一個字典,這樣可以更加靈活操作case以及做數(shù)據(jù)對比。

有了case list,加上之前我們發(fā)送請求和獲取結果的步驟就可以進行批量接口測試了,這里使用一個for循環(huán)就可以批量跑起來了:

我們將每次返回的結果,按照case的格式拼接成一個字典,就是我們的結果數(shù)據(jù),將每個結果字典再存儲到一個列表中,就得到了整個的結果字典列表,我們將它命名為case_result_list,這時,我們再次使用pandas庫,可以把這個列表轉換為dataframe格式:

之后我們將dataframe保存為excel文件:

至此,我們已經完成了從獲取case到發(fā)請求獲取結果,保存結果的全部流程。

對結果數(shù)據(jù)進行標識處理

經過以上的操作,我們已經完成了批量發(fā)請求,獲取結果的過程,如果我們需要對結果單元格做一些處理,比如標紅加粗等操作,使測試結果中的錯誤信息更加明顯,需要怎么操作呢?這里我們使用了python中的openpyxl庫。這個庫也是可以對Excel表格進行讀寫操作,并且可以插入一些公式和樣式。我們在這里使用的是樣式操作,我們根據(jù)單元格中的數(shù)據(jù)對結果進行標紅加粗操作:

最后得到的測試結果如下,通過使用openpyxl,我們還可以在結果中追加行,增加一些測試結果的統(tǒng)計信息,如case數(shù)、error數(shù),錯誤率正確率等。

1080×224 61.6 KB

以上就是一次完整的接口自動化測試腳本搭建,實現(xiàn)自動請求、獲取結果、數(shù)據(jù)對比分析,導出結果到Excel等功能,每一個步驟都比較簡單,可以快速搭建出滿足需求的自動化測試腳本,方面快速驗證服務端接口。

其中使用的requests庫、pandas庫是在python常用的庫,功能很強大,后續(xù)大家可以參考其官方文檔進行深入了解。

責任編輯:華軒 來源: 今日頭條
相關推薦

2024-05-13 16:29:56

Python自動化

2013-03-13 11:34:05

自動化測試Selenium.Net測試

2022-12-26 12:30:28

接口測試

2022-08-05 22:15:26

Python自動化測試

2024-11-21 15:24:49

2024-08-16 21:51:42

2024-11-11 16:55:54

2019-07-17 09:29:09

Python自動化接口

2022-07-04 09:00:36

Playwright自動化測試工具

2011-05-31 17:35:45

測試自動化QTP

2018-05-11 08:29:10

Python自動化測試數(shù)據(jù)驅動

2018-05-11 13:39:05

PythonCSV接口測試

2012-03-30 15:52:51

ibmdw

2023-09-13 11:40:12

2021-04-29 09:40:32

測試IDEAirtest

2023-12-25 09:52:32

2011-06-08 17:15:46

QTP腳本

2010-07-15 13:21:46

Perl多進程

2022-02-17 10:37:16

自動化開發(fā)團隊預測

2012-02-27 17:34:12

Facebook自動化
點贊
收藏

51CTO技術棧公眾號