自動化框架介紹及使用


自動化框架介紹及使用

1         自動化背景

A、 后續軟件需求不存在大的變動

B、 需要回歸保證功能穩定

C、 自動化測試腳本可重復使用

2         自動化環境搭建
2.1     安裝python

官網: https://www.python.org

在 Windows 命令提示符下輸入“ python”命令,可以進入 Python Shell 模式,及安裝成功

 

 

2.2     安裝pycharm

下載安裝 https://www.jetbrains.com/pycharm/download/#section=windows 

創建項目選擇項目路徑及解析器

 

 

2.3     安裝 Selenium及第三方庫
2.3.1 在線安裝

先進入路徑:File - settings - Project - Project Interpreter,點擊右側+號,在彈出的對話框中輸入:selenium,點擊install package

 

 

 

 

2.3.2 離線安裝

https://pypi.org/下載離線安裝包(tar包、wel文件),在對應下載目錄執行安裝命令

1、tar包

進入對應目錄執行:python setup.py install

2、whl文件

進入對應目錄執行:pip install *.whl

 

也可以從其他環境批量導入安裝

其他環境導出:

pip freeze > requirements.txt

 

 

 

 

pip download -d your_offline_packages -r requirements.txt

 

本環境導入:

將requirements文件及其offline_packages安裝包放在對應項目路徑中,執行命令

pip install --no-index --find-links=your_offline_packages -r requirements.txt

2.4     安裝chromedriver驅動

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

將chromedriver.exe放置到python的安裝目錄下(也可放在Scripts目錄)

 

 

 

 

 

 

 

2.5     環境驗證

新建python文件,輸入如下代碼並執行,成功打開chrome瀏覽器則環境搭建成功

 

3         自動化項目結構介紹

自動化框架是基於python + selenium + unittest實現web頁面的自動化測試

3.1     AutoCase項目結構

Case、business、page按照功能菜單目錄一一對應

目錄如下:

 

3.1.1 Page

用於存放元素page層的封裝:將該功能下所用到的頁面元素,按菜單功能封裝

在page中用到的單獨變量,放在對應的類中

 

 

 

 

3.1.1.1  元素定位

find_element_by_id()方法是通過 id 來定位元素的

find_element_by_name()方法是通過 name 來定位元素的

find_element_by_class_name()方法是通過 class 來定位元素的

find_element_by_tag_name()方法是通過元素的標簽名來定位元素的

find_element_by_link_text()方法是通過元素標簽對之間的文字信息來定位元素的

find_element_by_xpath()方法是用 XPath 來定位元素的

find_element_by_css_selector()方法通過CSS定位(CSS 定位速度比 XPath
定位速度快)

3.1.2 Business

用於業務層的封裝:將page層拼接形成業務層,按菜單功能封裝

 

3.1.3 Case

用於用例層的封裝:將business層拼接形成場景用例,按功能菜單封裝

 

 

 

 

1、  在用例層添加斷言判斷用例執行成功失敗

2、  所有用例以test*開頭,unittest只會把以“ test”開頭的方法當作測試用例

3、  編寫過程中添加@pytest.mark.run(order=1),便於后期通過pytest來規定用例執行的先后順序

4、  裝飾器

unittest.skip(reason):無條件地跳過裝飾的測試,需要說明跳過測試的原因

@unittest.skip("直接跳過測試")

 

unittest.skipIf(condition, reason):如果條件為真,則跳過裝飾的測試

@unittest.skipIf(3 > 2, "當條件為真時跳過測試")


unittest.skipUnless(condition, reason):當條件為真時,執行裝飾的測試

@unittest.skipUnless(3 > 2, "當條件為真時執行測試")

 

unittest.expectedFailure():不管執行結果是否失敗,都將測試標記為失敗

@unittest.expectedFailure()

3.1.3.1  TestBase.py

基礎case類(case繼承TestBase,TestBase繼承unittest.TestCase),封裝Fixture(初始化)內容:

setUpModule/tearDownModule:在整個模塊的開始與結束時被執行

setUpClass/tearDownClass:在測試類的開始與結束時被執行,需要@classmethod進行裝飾(不需要實例化就可以執行,方法的參數為 cls)

setUp/tearDown:在測試用例的開始與結束時被執行

3.1.3.2  斷言

   

 

3.1.4 Conf

主要用於測試環境的相關配置文件

3.1.4.1  ini文件

ini配置文件由節、鍵、值組成,通過Util中的readConf.py讀取配置

節:[urlenv]

鍵:[base_url]

值:[http://…]

3.1.4.2  BrowserEngine

封裝瀏覽器驅動,兼容多版本瀏覽器(Chrome\Firefox\IE),注意selenium、瀏覽器、驅動之間的版本關系

 

3.1.5 Datafile

用於存放數據測試文件(變量驗證,可以使用數據驅動測試)

 

 

3.1.6 Report

存放測試報告目錄

 

3.1.7 Screenshot

存放失敗用例截圖,可以鏈接到測試報告里,這邊截圖方法get_screenshot_as_file(),封裝在tearDown()中,self._outcome.errors為unittest中封裝的打印用例執行的日志(用例成功 error的第二項是None,error打印出來是個字典)

 

 

3.1.8 Util

存放工具類方法(DB連接、文件及文件夾路徑獲取、日志、生成測試報告、讀取conf.ini配置、截圖)

 

3.1.9 Run_case.py、suitecase.py腳本

Run_case.py:unittest執行用例腳本

Suitecase.py:用例執行順序文件(嚴格按照文件內容執行),unittest默認是按照用例名稱對應的ASCII碼的順序加載,數字與字母的順序為:0-9,A-Z,a-z

 

 

Unittest中自動掃描用例的方法discover(具體順序也是按照ASCII碼的順序加載)

 

4         如何使用

1、  下載項目到本地(svn管理自動化代碼,先更新后提交)

https://blog.csdn.net/deng_sir/article/details/89882893

2、  按菜單模塊命名對應的case\business\page,並編寫測試用例

3、  調測用例,用例執行成功后維護再上傳對應的case\business\page,suitcase.py文件

 


免責聲明!

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



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