網(wǎng)站什么也沒動(dòng)怎么不收錄啦免費(fèi)入駐的電商平臺(tái)
1. 簡(jiǎn)介
自動(dòng)化測(cè)試大概可以分三個(gè)層次:
1. 手工測(cè)試用例轉(zhuǎn)換成自動(dòng)化測(cè)試腳本的過程
2. 能設(shè)計(jì)自動(dòng)化測(cè)試框架,至少能夠維護(hù)自動(dòng)化測(cè)試框架。
3. 流程自動(dòng)化方案設(shè)計(jì),例如,一鍵打包,自動(dòng)開始測(cè)試,自動(dòng)發(fā)送測(cè)試報(bào)告,自動(dòng)運(yùn)維部署上線等。
通過前邊文章的基礎(chǔ)和練習(xí)講解,學(xué)習(xí)到這個(gè)時(shí)間節(jié)點(diǎn),應(yīng)該是完整介紹了手工測(cè)試用例裝換成自動(dòng)化測(cè)試腳本這一個(gè)初級(jí)水平,學(xué)到這里,你已經(jīng)具備了能夠編寫自動(dòng)化測(cè)試腳本的能力。
在開始介紹設(shè)計(jì)簡(jiǎn)單的自動(dòng)化測(cè)試框架之前,在這個(gè)節(jié)點(diǎn),插入一個(gè)新章節(jié),主要是介紹一些設(shè)計(jì)框架的前提技能和基本Python編寫代碼的能力。這些能力包括但不限于以下內(nèi)容:
1. 主流Python開發(fā)IDE工具的基本使用,例如Pycharm
2. Python中模塊,類和對(duì)象的具體代碼講解。
3. Selenium 常見方法的二次封裝。
4. 自定義方法的封裝和方法的調(diào)用-瀏覽器引擎類。
5. Python讀寫配置文件介紹
6. Python如何獲取系統(tǒng)時(shí)間和時(shí)間的格式化處理。
7. Python中常見字符串切割處理。
8. Python自定義一個(gè)日志生成方法封裝。
9. Selenium中一個(gè)截圖方法的封裝。
10. Python中繼承的使用。
通過介紹以上進(jìn)階技能學(xué)習(xí)后,我們才可以,或者有能力去思考和動(dòng)手去設(shè)計(jì)一個(gè)簡(jiǎn)單的自動(dòng)化測(cè)試框架。
2. pycharm安裝
在Python開發(fā)過程中,比較流行,很優(yōu)秀的一款I(lǐng)DE工具-PyCharm,這里關(guān)于它的介紹就一句話,它就相當(dāng)于Java開發(fā)中的Eclipse軟件一樣。有些人說,Eclipse上可以通過安裝插件擴(kuò)展來支持Python的代碼編寫,雖然可以這樣,但是我強(qiáng)烈建議,你本來就是
學(xué)習(xí),為啥不選擇一個(gè)符合大眾的選擇工具呢,不管你用沒有用戶Eclipse,在這里,你將要用PyCharm進(jìn)行自動(dòng)化測(cè)試框架的開發(fā)。
安裝很簡(jiǎn)單,直接下載安裝
3. pycharm簡(jiǎn)單使用
3.1?創(chuàng)建一個(gè)包,或者文件夾,或者python文件
如何創(chuàng)建一個(gè)包,或者文件夾,或者python文件,請(qǐng)看下圖:
?
3.2? 設(shè)置工作面板中的字體
如何設(shè)置工作面板中的字體:
點(diǎn)擊File-Settings,調(diào)出設(shè)置面板:
?
3.3?設(shè)置代碼面板中背景顏色
如何設(shè)置代碼面板中背景顏色成綠豆色,據(jù)說綠豆色養(yǎng)眼,護(hù)眼,綠豆色用RGB表示:C7EDCC
?
3.4 多行注釋快捷鍵
在PyCharm如何多行注釋: 選中多行代碼,ctrl+/
3.5 運(yùn)行代碼
在PyCharm如何運(yùn)行代碼:點(diǎn)擊菜單欄綠色三角 或者,在代碼面板,右鍵,選中Run ?xxx
?
4. Python中類/函數(shù)/模塊的簡(jiǎn)單介紹和方法調(diào)用
前邊小章節(jié)介紹了PyCharm的基本使用,接下來我們的腳本代碼都在這個(gè)PyCharm這個(gè)編輯器里寫。好處有很多,項(xiàng)目文件結(jié)構(gòu)層次清晰,寫代碼的時(shí)候會(huì)自動(dòng)化提示和補(bǔ)全。這里,我們?cè)谧蛱靹?chuàng)建的項(xiàng)目下,新建一個(gè)包,然后在包下面新建一個(gè)demo.py文
件。抄寫以下代碼到你的環(huán)境里,嘗試運(yùn)行下,看看有沒有問題。
關(guān)于Python中類和函數(shù)及方法的調(diào)用,我們寫在這個(gè)demo.py文件,具體代碼如下:
4.1 代碼實(shí)現(xiàn):
4.2 參考代碼:
# coding=utf-8class ClassA(object):string1 = "這是一個(gè)字符串。"def instancefunc(self):print ('這是一個(gè)實(shí)例方法。')print (self)@classmethoddef classfunc(cls):print ('這是一個(gè)類方法。')print (cls)@staticmethoddef staticfun():print ('這是一個(gè)靜態(tài)方法。')test = ClassA() # 初始化一個(gè)ClasssA的對(duì)象,test是類ClassA的實(shí)例對(duì)象
test.instancefunc() # 對(duì)象調(diào)用實(shí)例方法test.staticfun() # 對(duì)象調(diào)用靜態(tài)方法test.classfunc() # 對(duì)象調(diào)用類方法print (test.string1) # 對(duì)象調(diào)用類變量ClassA.instancefunc(test) # 類調(diào)用實(shí)例方法,需要帶參數(shù),這里的test是一個(gè)對(duì)象參數(shù)
ClassA.instancefunc(ClassA) # 類調(diào)用實(shí)例方法,需要帶參數(shù),這里的ClassA是一個(gè)類參數(shù)
ClassA.staticfun() # 類調(diào)用靜態(tài)方法
ClassA.classfunc() # 類調(diào)用類方法
4.3 運(yùn)行結(jié)果:
運(yùn)行代碼后,控制臺(tái)打印如下圖的結(jié)果
?
備注:
先運(yùn)行下代碼是否會(huì)報(bào)錯(cuò),然后嘗試自己去理解下。主要有以下幾點(diǎn)內(nèi)容
1. 類的定義,class開頭的就表示這是一個(gè)類,小括號(hào)里面的,表示這個(gè)類的父類,涉及到繼承,默認(rèn)object是所有類的父類。python中定義類,小括號(hào)內(nèi)主要有三種:1. 具體一個(gè)父類,2. object 3. 空白
2. 函數(shù)或方法的定義, def開頭就表示定義一個(gè)函數(shù),方法包括,實(shí)例方法,類方法,靜態(tài)方法,注意看類方法和靜態(tài)方法定義的時(shí)候上面有一個(gè)@標(biāo)記。
3. 對(duì)象調(diào)用方法和類調(diào)用方法的使用。
? ? ? ?這篇講的東西,確實(shí)比較難理解。如果學(xué)過java的人,可能會(huì)好理解類和對(duì)象,以及面向?qū)ο蟮母拍睢ython同時(shí)支持面向過程變成和面向?qū)ο缶幊?#xff0c;所有python中也有類和對(duì)象等概念。一般來說,概念的東西比較繞,如果你Python基礎(chǔ)沒有看到這部分,那就回去學(xué)習(xí)關(guān)于這塊的介紹。如果有看過了,還是不理解,我只能告訴你,繼續(xù)學(xué)下去,你現(xiàn)在哪怕死記住這些概念和他們的基本使用。等到后面,框架設(shè)計(jì)部分,你會(huì)慢慢體會(huì)到這些基本概念的實(shí)際用法,你跟著寫了代碼后,會(huì)有助于你自己
的理解和提高。
? ? ? ?最后,來說下python中的模塊,在python中,你新建一個(gè)demo.py文件,那么一個(gè).py文件可以說是一個(gè)模塊,一個(gè)模塊中,可以定義多個(gè)class,模塊中也可以直接定義函數(shù)。和java一樣,訪問不同包下的類和方法之前,需要導(dǎo)入相關(guān)路徑下的包。例如from
selenium import webdriver ?這個(gè)導(dǎo)入語句,我們知道webdriver這個(gè)接口是在selenium的模塊下。
本小章節(jié)的學(xué)習(xí)目的,就是會(huì)用函數(shù)或者類來編寫我們之前寫過的腳本。那么接下來就來體驗(yàn)一下吧。
5. 趁熱打鐵
這里以下用百度搜索舉例,模仿上面用類調(diào)用實(shí)例的方法來寫這個(gè)腳本,注意這里self指的是當(dāng)前BaiduSearch這個(gè)類本身:
5.1 代碼實(shí)現(xiàn):
5.2 參考代碼:
# coding=utf-8import time
from selenium import webdriverclass BaiduSearch(object):driver = webdriver.Chrome()driver.maximize_window()driver.implicitly_wait(10)def open_baidu(self):self.driver.get("https://www.baidu.com")time.sleep(1)def test_search(self):self.driver.find_element_by_id('kw').send_keys("selenium")time.sleep(1)print (self.driver.title)try:assert 'selenium' in self.driver.titleprint ('Test pass.')except Exception as e:print ('Test fail.')self.driver.quit()baidu = BaiduSearch()
baidu.open_baidu()
baidu.test_search()
5.3 運(yùn)行結(jié)果:
運(yùn)行代碼后,控制臺(tái)打印如下圖的結(jié)果
?
?