日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python代码架构_Python架构

發布時間:2025/4/5 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python代码架构_Python架构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、自動化測試框架

1.什么是自動化測試框架

簡單來說,自動化測試框架就是由一些標準,協議,規則組成,提供腳本運行的環境。自動化測試框架能夠提供很多便利給用戶高效完成一些事情,例如,結構清晰開發腳本,多種方式、平臺執行腳本,良好的報告去跟蹤腳本執行結果。

框架具有以下一些優點:

1)代碼復用

2)最大覆蓋率

3)很低成本維護

4)很少人工干預

5)簡單報告輸出

2.常見的測試框架分類

好多Selenium自動化測試開發人員是有QTP那邊轉過來的,所以,他們在早期設計的框架大致可分為以下幾類:

1)基于模塊的測試框架

2)基于庫(Library)結構測試框架

3)數據驅動測試框架,和QTP很像

4)關鍵字驅動測試框架,也是QTP過來的

5)混合測試框,3 4和綜合

6)行為驅動開發測試框架

這里我們不一一介紹這些框架,字面意思可以想象一些這些框架的背景和組件,本文只是對框架有一個基本了解。

3.框架基本組件

我們來思考下框架組成部分:

1)需要配置文件管理

2)業務邏輯代碼和測試腳本分離

3)報告和日志文件輸出

4)自定義的庫的封裝

5)管理、執行腳本方式

6)第三方插件引入

7)持續集成

解釋:

我們需要一個配置文件去控制一些,環境信息,開關,配置文件可以是txt/xml/yaml/properties/ini,一般.properties使用較多在JAVA里,本文是Python系列,我可能會選擇ini文件。

業務邏輯代碼和測試腳本分離,不像我們剛開始學習Selenium那樣,代碼和腳本在一個類文件里演示。我們根本沒有用到代碼重構,復用。代碼和用例文件分離后,更加清晰,去多人開發腳本,方便調試。

報告和日志文件輸出,你執行了多少case,case結果如何,這都需要報告來展示,一般采用第三方插件來實現這個功能,好多報告格式是html,簡單,明了的風格。日志輸出也很重要,如果發生報錯,腳本執行失敗,通過日志快速定位發生問題位置。

用戶自定義庫,這個很好理解,我們很多功能需要重復調用,這樣我們就寫成一個公用方法,放到工具包下,每次方便調用,例如瀏覽器引擎類和basepage.py的封裝。

管理和執行腳本的方式,例如Python中單元測試框架unittest使用率非常高。

第三方插件,有時候,我們一些功能,需要借助第三方插件,能夠更好實現,例如AutoIT,來實現文件上傳和下載。還有利用第三方報告插件生成基于html格式的測試報告。

持續集成,git,svn,ant,maven,jenkins,我們會把這整合到jenkins,達到持續集成,一鍵執行測試腳本。

根據以上的特點介紹,我大致用以下圖來描述一下,一個簡單的自動化測試框架,可能包含哪些組成部分。

框架的簡單介紹就到這里,有些人把框架想得太復雜了,框架無非就是一些軟件的集合,達到特定的目的。這里我們上圖畫出來的框架,就是一個簡單的自動化測試框架,別笑,這確實是一個簡單但又包含必要的組件的自動化測試框架設計實例,如果你學會了這個設計思路和思想,那么,你已經達到了自動化測試第二個階段的水平:能夠簡單設計自動化測試框架和維護框架的能力。

二、簡單介紹unittest單元測試框架

unittest是一個單元測試框架,是Python編程的單元測試框架。

unittest支持測試自動化,共享測試用例中的初始化和關閉退出代碼,在unittest中最小單元是test,也就是一個測試用例。要了解unittest單元測試框架,先來了解以下幾個重要的概念。

測試固件(test fixture)

一個測試固件包括兩部分,執行測試代碼之前的準備部分和測試結束之后的清掃代碼。這兩部分一般用函數setUp()和tearDown()表示。這里舉例以下,例如要測試百度搜索selenium這個場景,我們的測試固件可以這樣寫,setUp()里寫打開瀏覽器,瀏覽器最大化,和打開百度首頁等腳本代碼;在tearDown()里寫結束搜索后,退出并關閉瀏覽器的代碼。

測試用例(test case)

unittest中管理的最小單元是測試用例,一個測試用例,包括測試固件,和具體測試業務的函數或者方法。一個測試用例中,測試固件可以不寫,但是至少有一個已test開頭的函數。unittest會自動化識別test開頭的函數是測試代碼,如果你寫的函數不是test開頭,unittest是不會執行這個函數里面的腳本的,這個千萬要記住,所有的測試函數都要test開頭,記住是小寫的哦。

測試套件 (test suite)

很簡單,就是很多測試用例的集合,叫測試套件,一個測試套件可以隨意管理多個測試用例。如果測試用例比作單個學生,測試套件就是好像是班級的概念。

測試執行器 (test runner)

test runner是一個用來執行加載測試用例,并執行用例,且提供測試輸出的一個組建。test runner可以加載test case或者test suite進行執行測試任務。

我們舉例來,練習一下test fixture和test case的使用,學習unittest的簡單用法:

1. 新建一個testbaidu.py的文件

2. 導入unittest模塊

3. 當前測試類繼承unittest.TestCase,相當于當前利用unittest創建了一個test case,這個test case是能夠被unittest直接識別。

4. 寫setUP(),主要是打開瀏覽器和打開站點

5. 寫一個test_search()用例寫搜索的代碼

6. 寫tearDown(),主要是瀏覽器退出操作

相關腳本代碼如下:

復制代碼

# coding=utf-8

import time

import unittest

from selenium import webdriver

class BaiduSearch(unittest.TestCase):

def setUp(self):

"""

測試固件的setUp()的代碼,主要是測試的前提準備工作

:return:

"""

self.driver = webdriver.Chrome()

self.driver.maximize_window()

self.driver.implicitly_wait(8)

self.driver.get("https://www.baidu.com")

def tearDown(self):

"""

測試結束后的操作,這里基本上都是關閉瀏覽器

:return:

"""

self.driver.quit()

def test_baidu_search(self):

"""

這里一定要test開頭,把測試邏輯代碼封裝到一個test開頭的方法里。

:return:

"""

self.driver.find_element_by_id('kw').send_keys('selenium')

time.sleep(1)

try:

assert 'selenium' in self.driver.title

print ('Test Pass.')

except Exception as e:

print ('Test Fail.', format(e))

if __name__ == '__main__':

unittest.main()

復制代碼

解釋:

最后結尾處的unittest.main(),添加這個是支持在cmd,里面,cd到這個腳本文件所在的目錄,然后python 腳本名.py執行,如果不添加這一段,是無法執行cmd里面運行腳本的,在PyCharm中,不添加最后一段,也可以通過,右鍵 Run "unittest xxx",來達到執行效果。

三、什么是POM

POM,中文字母意思是,頁面對象模型,POM是一種最近幾年非常流行的自動化測試模型,或者思想,POM不是一個框架,就是一個解決問題的思想。采用POM的目的,是為了解決前端中UI變化頻繁,從而造成測試自動化腳本維護的成本越來越大。下圖,形象描述了POM的好處。

從上圖看出,采取了POM設計思路和不采取的區別,左側把測試代碼和頁面元素都寫在一個類文件,如果需要更改頁面,那么就要修改頁面元素定位,從而要修改這個類中測試代碼,這個看起來和混亂。右側,采取POM后,主要的區別就是,把頁面元素和業務邏輯和測試腳本分離出來到兩個不同類文件。ClassA只寫頁面元素定位,和業務邏輯代碼操作的封裝,ClassB只寫測試腳本,不關心如何元素定位,只寫調用ClassA的代碼去覆蓋不同的測試場景。如果前端頁面發生變化,只需要修改ClassA的元素定位,而不需要去修改ClassB中的測試腳本代碼。

POM主要有以下優點:

1. 把web ui對象倉庫從測試腳本分離,業務代碼和測試腳本分離。

2. 每一個頁面對應一個頁面類,頁面的元素寫到這個頁面類中。

3. 頁面類主要包括該頁面的元素定位,和和這些元素相關的業務操作代碼封裝的方法。

4. 代碼復用,從而減少測試腳本代碼量。

5. 層次清晰,同時支持多個編寫自動化腳本開發,例如每個人寫哪幾個頁面,不影響他人。

6. 建議頁面類和業務邏輯方法都給一個有意義的名稱,方便他人快速編寫腳本和維護腳本。

總結

以上是生活随笔為你收集整理的python代码架构_Python架构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。