您的位置:首頁>正文

最火Python+最牛requests產生火花!介面自動化測試!企業級項目

1、首先, 我們先來理一下思路。

正常的介面測試流程是什麼?

腦海裡的反應是不是這樣的:

確定測試介面的工具 —> 配置需要的介面參數 —> 進行測試 —> 檢查測試結果(有的需要資料庫輔助) —> 生成測試報告(html報告)

那麼, 我們就根據這樣的過程來一步步搭建我們的框架。 在這個過程中, 我們需要做到業務和資料的分離, 這樣才能靈活, 達到我們寫框架的目的。 只要好好做, 一定可以成功。 這也是我當初對自己說的。

既然整體結構有了劃分, 接下來就該一步步的填充整個框架了, 首先, 我們先來看看config.ini和readConfig.py兩個文件,

從他們入手, 個人覺得比較容易走下去噠。

我們來看下檔的內容是什麼樣子的:

相信大家都知道這樣的設定檔, 沒錯, 所有一成不變的東西, 我們都可以放到這裡來。 哈哈, 怎麼樣, 不錯吧。

現在, 我們已經做好了固定的“倉庫”。 來保存我們平時不動的東西,

那麼, 我們要怎麼把它拿出來為我所用呢?這時候, readConfig.py檔出世了, 它成功的幫我們解決了這個問題, 下面就讓我們來一睹它的廬山真面目吧。

現在, 我們創建了上面的Log類, 在__init__初始化方法中, 我們進行了log的相關初始化操作。 具體的操作內容, 注釋已經寫得很清楚了(英文有點兒差, 大家看得懂就行, 嘿嘿……), 這樣, log的基本格式已經定義完成了, 至於其他的方法, 就靠大家自己發揮了, 畢竟每個人的需求也不同, 我們就只寫普遍的共用方法啦。 接下來, 就是把它放進一個執行緒內了, 請看下面的代碼:

以上這些,就是常用的方法啦,大家可自行取之。

關於失敗請求拋出異常,我們可以使用“raise_for_status()”來完成,那麼,當我們的請求發生錯誤時,就會拋出異常。在這裡提醒下各位朋友,如果你的介面,在位址不正確的時候,會有相應的錯誤提示(有時也需要進行測試),這時,千萬不能使用這個方法來拋出錯誤,因為python自己在連結介面時就已經把錯誤拋出,那麼,後面你將無法測試期望的內容。而且程式會直接在這裡當掉,以錯誤來計。(別問我怎麼知道的,因為我就是測試的時候發現的)

好了。介面檔也講完了,是不是感覺離成功不遠了呢?嗯,如果各位已經看到了這裡,那麼恭喜大家,下面還有很長的路要走~哈哈哈,就是這麼任性。(畢竟小編我為了讓各位和我差不多的小白能夠更容易理解,也是使出了體內的洪荒之力啦)

慢慢地長歎一口氣,繼續下面的內容。。。

快,我想學(看)習(看)common.py裡的內容。

上面就是我們common的兩大主要內容了,什麼?還不知道是什麼嗎?讓我告訴你吧。

我們利用xml.etree.Element來對xml檔進行操作,然後通過我們自訂的方法,根據傳遞不同的參數取得不(想)同(要)的值。

利用xlrd來操作excel檔,注意啦,我們是用excel文件來管理測試用例的。

聽起來會不會有點兒懵,小編剛學時也很懵,看檔就好理解了。

excel文件:

xml文件:

這就是完整的資料庫的檔啦。因為小編的需求對資料庫的操作不是很複雜,所以這些已基本滿足要求啦。注意下啦,在此之前,請朋友們先把pymysql裝起來!pymysql裝起來!pymysql裝起來!(重要的事情說三遍),安裝的方法很簡單,由於小編是使用pip來管理python包安裝的,所以只要進入python安裝路徑下的pip資料夾下,執行以下命令即可:

pip install pymysql

哈哈哈,這樣我們就可以利用python連結資料庫啦~(鼓個掌,慶祝下)

小夥伴們發現沒,在整個檔中,我們並沒有出現具體的變數值哦,為什麼呢?沒錯,因為前面我們寫了config.ini檔,所有的資料庫配置資訊都在這個檔內哦,是不是感覺很方便呢,以後就算變更資料庫了,也只要修改config.ini檔的內容就可以了,結合前面測試用例的管理(excel文件),sql語句的存放(xml檔),還有接下來我們要說的,businessCommon.py和存放具體case的資料夾,那麼我們就已經將資料和業務分開啦,哈哈哈,想想以後修改測試用例內容,sql語句神馬的工作,再也不用每個case都修改,只要改幾個固定的檔,是不是頓時開心了呢?(嗯,想笑就大聲的笑吧)

回歸上面的configDB.py檔,內容很簡單,相信大家都能看得懂,就是連接資料庫,執行sql,獲取結果,最後關閉資料庫,沒有什麼不一樣的地方。

這裡就是完整的檔內容了,不過可惜的是,小編我遇到一個問題,至今未解,在這裡提出,希望大神給出解決辦法!跪求啦!

問題:使用163免費郵箱伺服器進行郵件的發送,但是,每次發送郵件,都會被163郵件伺服器退信,拋出的錯誤碼是:554

官方說明如下:

但是,however,but……小編在整合email進本框架之前寫的發送email的小demo是可以正常發送郵件的。這個問題困擾著我,目前仍沒有解決,望大神賜教。

關於python對email的操作,上面代碼看不太明白的朋友,請移步這裡繼續學習:https://my.oschina.net/u/3041656/blog/819937

離成功不遠了,簡單說明下HTMLTestRunner.py檔,這個檔呢,也不是小編寫的,小編只是它的搬運工,哈哈哈,這個檔是從網上下載的,大神寫好的,用於生成html格式的測試報告,什麼?想知道生成測試報告的樣子?好,這就滿足好奇的你:

看上去不錯吧,嗯,聰明的你們,也可以自己去探索下這個檔,修改修改,變成你自己的style哦~

好了,重頭戲來了,就是我們的runAll.py啦。請看主角登場。

這是我們整個框架運行的入口,上面內容完成後,這是最後一步啦,寫完它,我們的框架就算是完成了。(鼓掌,撒花~)

上面我貼出了runAll裡面的主要部分,首先我們要從caselist.txt檔中讀取需要執行的case名稱,然後將他們添加到python自帶的unittest測試集中,最後執行run()函數,執行測試集。關於python的unittest,需要學的內容還是很多的,所以這裡小編就不細講了,

終於呢,整個介面自動化框架已經講完了,大家是不是看明白了呢?什麼?之前的之前貼出的目錄結構中的檔還有沒說到的?嘿嘿,,,相信不用小編多說,大家也大概知道了,剩下資料夾的作用了。嗯~思索萬千,還是決定簡單談談吧。直接上圖,簡單明瞭:

result資料夾會在首次執行case時生成,並且以後的測試結果都會被保存在該資料夾下,同時每次測試的資料夾都是用系統時間命名,裡面包含了兩個檔,log文件和測試報告。

testCase資料夾下,存放我們寫的具體的測試case啦,上面這些就是小編寫的一些。注意嘍,所有的case名稱都要以test開頭來命名哦,這是因為,unittest在進行測試時會自動匹配testCase資料夾下面所有test開頭的.py文件

testFile資料夾下,放置我們測試時用來管理測試用例的excel檔和用於資料庫查詢的sql語句的xml文件哦。

最後就是caselist.txt文件了,就讓你們瞄一眼吧:

凡是沒有被注釋掉的,都是要被執行的case名稱啦。在這裡寫上你要執行的case名稱就可以啦。

呼~長舒一口氣,終於完成了整個過程,嗯,相信堅持看下來的你們一定會有所收穫的。在這裡,我要鄭重說一句:上文中提到的有關郵箱的問題,希望知道的大神賜教啊!!!

如有侵權請聯繫小編刪除哦!

以上這些,就是常用的方法啦,大家可自行取之。

關於失敗請求拋出異常,我們可以使用“raise_for_status()”來完成,那麼,當我們的請求發生錯誤時,就會拋出異常。在這裡提醒下各位朋友,如果你的介面,在位址不正確的時候,會有相應的錯誤提示(有時也需要進行測試),這時,千萬不能使用這個方法來拋出錯誤,因為python自己在連結介面時就已經把錯誤拋出,那麼,後面你將無法測試期望的內容。而且程式會直接在這裡當掉,以錯誤來計。(別問我怎麼知道的,因為我就是測試的時候發現的)

好了。介面檔也講完了,是不是感覺離成功不遠了呢?嗯,如果各位已經看到了這裡,那麼恭喜大家,下面還有很長的路要走~哈哈哈,就是這麼任性。(畢竟小編我為了讓各位和我差不多的小白能夠更容易理解,也是使出了體內的洪荒之力啦)

慢慢地長歎一口氣,繼續下面的內容。。。

快,我想學(看)習(看)common.py裡的內容。

上面就是我們common的兩大主要內容了,什麼?還不知道是什麼嗎?讓我告訴你吧。

我們利用xml.etree.Element來對xml檔進行操作,然後通過我們自訂的方法,根據傳遞不同的參數取得不(想)同(要)的值。

利用xlrd來操作excel檔,注意啦,我們是用excel文件來管理測試用例的。

聽起來會不會有點兒懵,小編剛學時也很懵,看檔就好理解了。

excel文件:

xml文件:

這就是完整的資料庫的檔啦。因為小編的需求對資料庫的操作不是很複雜,所以這些已基本滿足要求啦。注意下啦,在此之前,請朋友們先把pymysql裝起來!pymysql裝起來!pymysql裝起來!(重要的事情說三遍),安裝的方法很簡單,由於小編是使用pip來管理python包安裝的,所以只要進入python安裝路徑下的pip資料夾下,執行以下命令即可:

pip install pymysql

哈哈哈,這樣我們就可以利用python連結資料庫啦~(鼓個掌,慶祝下)

小夥伴們發現沒,在整個檔中,我們並沒有出現具體的變數值哦,為什麼呢?沒錯,因為前面我們寫了config.ini檔,所有的資料庫配置資訊都在這個檔內哦,是不是感覺很方便呢,以後就算變更資料庫了,也只要修改config.ini檔的內容就可以了,結合前面測試用例的管理(excel文件),sql語句的存放(xml檔),還有接下來我們要說的,businessCommon.py和存放具體case的資料夾,那麼我們就已經將資料和業務分開啦,哈哈哈,想想以後修改測試用例內容,sql語句神馬的工作,再也不用每個case都修改,只要改幾個固定的檔,是不是頓時開心了呢?(嗯,想笑就大聲的笑吧)

回歸上面的configDB.py檔,內容很簡單,相信大家都能看得懂,就是連接資料庫,執行sql,獲取結果,最後關閉資料庫,沒有什麼不一樣的地方。

這裡就是完整的檔內容了,不過可惜的是,小編我遇到一個問題,至今未解,在這裡提出,希望大神給出解決辦法!跪求啦!

問題:使用163免費郵箱伺服器進行郵件的發送,但是,每次發送郵件,都會被163郵件伺服器退信,拋出的錯誤碼是:554

官方說明如下:

但是,however,but……小編在整合email進本框架之前寫的發送email的小demo是可以正常發送郵件的。這個問題困擾著我,目前仍沒有解決,望大神賜教。

關於python對email的操作,上面代碼看不太明白的朋友,請移步這裡繼續學習:https://my.oschina.net/u/3041656/blog/819937

離成功不遠了,簡單說明下HTMLTestRunner.py檔,這個檔呢,也不是小編寫的,小編只是它的搬運工,哈哈哈,這個檔是從網上下載的,大神寫好的,用於生成html格式的測試報告,什麼?想知道生成測試報告的樣子?好,這就滿足好奇的你:

看上去不錯吧,嗯,聰明的你們,也可以自己去探索下這個檔,修改修改,變成你自己的style哦~

好了,重頭戲來了,就是我們的runAll.py啦。請看主角登場。

這是我們整個框架運行的入口,上面內容完成後,這是最後一步啦,寫完它,我們的框架就算是完成了。(鼓掌,撒花~)

上面我貼出了runAll裡面的主要部分,首先我們要從caselist.txt檔中讀取需要執行的case名稱,然後將他們添加到python自帶的unittest測試集中,最後執行run()函數,執行測試集。關於python的unittest,需要學的內容還是很多的,所以這裡小編就不細講了,

終於呢,整個介面自動化框架已經講完了,大家是不是看明白了呢?什麼?之前的之前貼出的目錄結構中的檔還有沒說到的?嘿嘿,,,相信不用小編多說,大家也大概知道了,剩下資料夾的作用了。嗯~思索萬千,還是決定簡單談談吧。直接上圖,簡單明瞭:

result資料夾會在首次執行case時生成,並且以後的測試結果都會被保存在該資料夾下,同時每次測試的資料夾都是用系統時間命名,裡面包含了兩個檔,log文件和測試報告。

testCase資料夾下,存放我們寫的具體的測試case啦,上面這些就是小編寫的一些。注意嘍,所有的case名稱都要以test開頭來命名哦,這是因為,unittest在進行測試時會自動匹配testCase資料夾下面所有test開頭的.py文件

testFile資料夾下,放置我們測試時用來管理測試用例的excel檔和用於資料庫查詢的sql語句的xml文件哦。

最後就是caselist.txt文件了,就讓你們瞄一眼吧:

凡是沒有被注釋掉的,都是要被執行的case名稱啦。在這裡寫上你要執行的case名稱就可以啦。

呼~長舒一口氣,終於完成了整個過程,嗯,相信堅持看下來的你們一定會有所收穫的。在這裡,我要鄭重說一句:上文中提到的有關郵箱的問題,希望知道的大神賜教啊!!!

如有侵權請聯繫小編刪除哦!

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示