python pytest selenium 自動化測試框架搭建

python pytest selenium 自動化測試框架搭建

     公司一直有這個自動化測試需求,前期利用c++或者python進行了一些自動化腳本的編寫。這幾天沒有版本更迭,基於前期的工作,把自動化測試整理了一部分功能模塊。現在的狀態基本達到預期:即搭建了一個AutoTest框架,基於此實現了login、設備管理兩個模塊的自動化測試,並基於實際,進行了合理的wait優化,後期的工作就是繼續完善其它模塊的內容。截止2020年7月1日11:41:37,該架構,可實現模塊自動化測試、html報告輸出、log日誌輸出。部分設計、方法取於網絡。

     寫一篇詳細一點的,完整搭建web端自動化測試的過程出來。其中包含自動化從分析到落地的全過程。

以下爲主要的幾個時間節點。

1.自動化的可行性分析。√2020年2月28日14:12:28已完成。
2.自動化可測試內容明確。√2020年2月28日14:12:43已完成
3.自動化測試用例設計注意事項。√2020年2月28日15:12:47 已完成。
4.AT測試工具、語言、結構確定。√2020年7月1日09:09:16 已完成。python做基礎。pytest做框架。selenium爲方法
5.開始編寫testcase。ing 已完成login以及manage-vehi模塊已完成。包含html報告生成、log生成。
6.需要解決兩個問題。sleep過多。導致執行效率慢 √2020年7月1日11:35:01 已完成,由於項目內web無特殊控件加載需要特別長時間,暫時只使用了隱式wait

1、自動化可行性分析

   此部分主要進行公司內部各項目的自動化可行性分析。這部分我主要大體上考量了作用域、優劣、適用項目。

結合項目實際,確定自動化可適用初步結論。

 

2、自動化可測試內容明確

          這一部分主要是結合測試項目的測試用例或者功能點。逐條進行初步的能否進行自動化處理的判定,進而整理出AT自身的測試用例。當然必要時可進行測試組內部的評定,用例編寫完畢可進行項目內評審,以便查缺補漏。

         基於人工測試編寫的測試用例,往往只有一部分適用於自動化測試。而人工測試時考量到測試時間,會存在一些未詳細測試的功能項(如login時的多種情況),通過自動化能夠進行處理,而不需要擔心後期執行用例會消耗的時間。

         以下是基於原有項目測試用例模塊,初步細化後的一條 AT測試用例 截圖。內容較爲簡單。當前階段只需要基於原有用例進行“能否AT的初步判定”,不需要進行進一步的細化。

 

3.自動化測試用例設計注意事項

       我一直覺得用例設計應該放在前面,所以在這個階段,就結合網絡資料明細了自動化測試用例需要考慮的幾個點。總結起來爲四點:獨立執行、重複執行、減少依賴、提高效率。

至此,我們明確了可執行自動化測試的功能點。也懂得了自動化測試用例的一些關鍵點。我選擇了login模塊,和一個項目業務相關的一個管理模塊進行功能點簡單細分,效果就是前面的用例截圖。從圖中可以看到在測試方法後者步驟,是定義了input、output、check項、recover方法等四個內容。

 

4.自動化測試框架設計

     之前有一些python編程基礎,以及selenium程序+firefox的錄製經驗。但是到這個階段,我對自動化測試的框架理解還是隻有10%。所以決定做一個自動化框架及所用模塊的網絡調研。大體瞭解一下。用了xmind軟件。梳理思路。

包含:

“爲什麼要用框架”、

“框架包含哪些內容”、

“應該選擇哪種框架,市面上有哪些框架,分別針對那種測試對象。”、

“目前主流是什麼?最新是什麼?準備嘗試什麼”、

以及最後的“python+pytest+selenium框架搭建”流程計劃

現在回過頭來看,整理出來的東西還是模模糊糊的。不過對於落地不會有太大影響。

 

      明確出來了需要使用的模塊、以及搭建過程、甚至於後期規劃的CI。但是以上對於要AT測試落地還有一節。下一階段就是代碼搭建了。python做基礎。pytest做框架。selenium爲方法。

明細了以下幾點:

編程語言確定:python3。簡單易上手。插件多。

框架確定:pytest的python插件。最新,兼容高。

方法確定:selenium的python插件,由於是web自動化,所以就是用的selenium。

在下一階段前,你應當確認一下條件以便更好進入AT代碼用例編寫。

1.系統應當具備python3環境。https://www.python.org/downloads/  我用的python3.7

2.系統應當以安裝pycharm環境。以便於調試。官網下載試用版30天。

3.系統應安裝chrome、ie或者firefox瀏覽器合適的版本。

4.你應當瞭解瀏覽器對應的driver驅動版本。並將它們下載下來。

版本對應關係:https://blog.csdn.net/qq_28284093/article/details/81938789

http://selenium-release.storage.googleapis.com/index.html?path=4.0-alpha-5/

http://chromedriver.storage.googleapis.com/index.html

https://github.com/mozilla/geckodriver/releases

5.selenium定位元素的幾種方法。

##############################################################元素定位########################################################################
1.元素定位方法
F12,點擊彈出的代碼查看欄左上角符號:“select an element in the page to inspect it”。而後再點擊你想查詢的元素即可定位html代碼中的元素參數信息。
############################################################元素定位##########################################################################
2.元素定位方法
id定位: driver.find_element_by_id('kw').send_keys('selenium')
name定位:driver.find_element_by_name('wd').send_keys('selenium')
class定位:driver.find_element_by_class_name('s_ipt').send_keys('selenium')
link定位:driver.find_element_by_link_text('新聞').click()
partial_link定位(模糊定位):driver.find_element_by_partial_link_text('聞').click()
xpath定位(萬能定位):driver.find_element_by_xpath("//*[@id='kw']").send_keys('selenium')
獲取xpath的方法:chrome F12,左上角符號定位element,在html代碼行中右鍵copy,選擇xpath即可得到xpath路徑。但是ie和chrome可能獲取的xpath不同。(當產品默認爲ie時)
                ie目前上沒有公佈的xpath插件。
CSS定位:driver.find_element_by_css_selector('#kw').send_keys('selenium')

6.如何獲取元素的xpath(絕對路徑)。https://www.cnblogs.com/puresoul/archive/2012/10/04/2711372.html

 

5.AT測試之代碼架構

     框架梳理主要來源於這篇文章:https://blog.csdn.net/haoxun06/article/details/104383331

     由於涉及到項目內容,代碼不公示。接下來的代碼編寫,需要一點編程知識。過程中遇到的問題,網上基本都有解決方法

     畫紅框爲在用的框架結構。test_suit中爲已編寫好的兩個模塊(login、設備管理)的用例集合。

   用的Gitee來實現代碼管理。結果用得不熟練,把我早上的終版代碼貌似搞丟了。。。。終端代碼主要優化了執行效率。

2020年7月1日16:21:44 花了一會時間,恢復了最終代碼。

6.執行結果,html報告

第一圖爲pycharm執行結果。

第二圖爲執行結果的html報告。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章