




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、引子作為一個(gè)無 dev 經(jīng)驗(yàn)的 tester 來說,目前遇到許多新的問題,關(guān)于 tester 以后的人員 基本素質(zhì)的構(gòu)成,現(xiàn)在也有許多說法,在這里,不想過多的鋪開討論了。作為一個(gè) tester , 本身當(dāng)然必須對 test 這件事情感興趣, 才能把工作做好。 有的人天生喜歡找茬, 喜歡提意見, 在我看來,就是一個(gè)不錯(cuò)的 tester 的料。當(dāng)你天天對著同一個(gè)產(chǎn)品的不同版本不停的測試 的時(shí)候,自然會產(chǎn)生一些怨言,由此產(chǎn)生懈怠?!澳承┕δ茳c(diǎn)我都連著測試了 N 個(gè)版本了,肯定不會出錯(cuò)了” “這種基本功能點(diǎn),怎 么可能出錯(cuò)” 這樣的論調(diào)是很有可能產(chǎn)生的。 于是, 一個(gè) tester 很有可能在某次 r
2、elease 的 過程中,經(jīng)驗(yàn)主義的放過了某些功能點(diǎn)的測試。幾天后, 一個(gè)用戶反饋上來,那個(gè)功能點(diǎn)出 了問題 .“偷懶”這個(gè)詞語,在測試過程中,不應(yīng)該算一個(gè)貶義詞 (當(dāng)然了,故意漏過功能點(diǎn)不 測試,不在此列 。因?yàn)椤巴祽小贝呱碌募夹g(shù), “偷懶”節(jié)省更多的時(shí)間。我相信,自動化 測試就是這樣來的。正題任何事情都可以分解為很小的部分, 讓我們先分析一下, 手工執(zhí)行測試案例的一個(gè)過程:打開被測軟件執(zhí)行測試案例給出測試結(jié)果然后,我們不斷重復(fù)這個(gè)過程。最后給出測試報(bào)告。顯然, 我們的自動化測試也要滿足上面的這個(gè)過程中的所有要求。 既然是自動化, 首先 要求是所有的測試用例可以無人值守運(yùn)行 ; 其次,每個(gè)
3、測試用例都由機(jī)器來模擬人對軟件的 操作 ; 第三,某個(gè)測試用例失敗不能影響其他測試用例的繼續(xù)執(zhí)行 ; 第四,測試數(shù)據(jù)和測試用 例最好分離開來 ; 最后一點(diǎn),測試結(jié)束之后,給個(gè)報(bào)告或者給個(gè)圖告知測試結(jié)果。根據(jù)上面的分析,我們逐個(gè)來一一解決, 當(dāng)然了,本篇都是很初級的解決方式,相信有 許多大牛會有更好的方式來解決。無人值守運(yùn)行,那么 python 的 unittest 的框架就能達(dá)到這個(gè)目的。模擬人的操作, selenium 可以勝任。測試用例間無影響,同 1數(shù)據(jù)分離,那把測試數(shù)據(jù)都扔 xml 里。待完善 (本例中只是在部分方法中添加錯(cuò)誤提示 開始動手對 python 的 unittest 進(jìn)行一
4、些小手術(shù),當(dāng)然了,如果只追求簡單,直接用也行。 defassertLogEqual(self, arg1, arg2:print "assertLogEqual('"+arg1+"', '"+arg2+"': "if arg1 != arg2:self.anyfailure = Trueprint " -> Failed: not equal"self.result_note = " '%s' and 's%' is not equal
5、n "%(arg1,arg2else:print " ->OK"self.result_note = "%s OKn" % self.result_noteself.assertEqual(arg1, arg2defassertLogTrue(self, arg1, note="":print "assertLogTrue("+str(arg1+": "+noteif arg1 is False:self.anyfailure = Trueprint " -> F
6、ailed: Excepting True"self.result_note = " %sError: %sn " % (self.result_note, noteelse:print " ->OK"self.resulte_note = "%s OKn" % self.result_noteself.assertTrue(arg1defassertLogFalse(self, arg1, note="":print "assertLogFalse("+str(arg1+&qu
7、ot;: "+noteif arg1 is True:print " ->FAILED: Expecting False."self.anyfailure = Trueself.result_note = "%sError: %sn" % (self.result_note, noteelse:self.result_note = "%sOKn" % self.result_noteprint " ->OK"self.assertFalse(arg1自己新建一個(gè)類,繼承 unittest ,然
8、后修改必要的一些方法,并添加部分方法,譬如設(shè) 置 testName 啊,設(shè)置標(biāo)記值來標(biāo)記 case 知否執(zhí)行結(jié)束啊。這些都是可以根據(jù)自己喜好來加 入的方法。defsetTestName(self, tname:self.testname = tnamedefgetTestName(self:returnself.testnamedefsetCompleted(self:pleted = TruedefisCompleted(self:pleted對于 unittest 框架的修改就寫這么多。對 selenium 的基本方法做一些小改動, 動機(jī)優(yōu)化 unittest 框架一致, 只是為了讓你的用
9、 例跑起來的時(shí)候更加讓人理解。我們相當(dāng)于在 selenium 的基本方法外面又封裝了一層。下 面是部分方法示例:def open(self,url:self.sel.open(urldefGetValue(self, element:value = self.sel.get_value(elementself.assertLogTrue(True, "Value for element %s is %s" %(element, valuereturn valuedefisTextPresent(self, text:val = self.sel.is_text_presen
10、t(textifval is False:self.assertLogTrue(val, note="error occured *" + text +" not found"else:print 'present (%s,%s' % (text,valreturnvaldef Select(self, element, selection:ifself.isElementPresent(element:self.sel.select(element, selectiondef Check(self, element:ifself.isE
11、lementPresent(element:self.sel.check(elementdef Type(self, element, text:ifself.isElementPresent(element:self.sel.type(element, text測試數(shù)據(jù)分離,這個(gè)做的非常簡單,就是把期望值和控件位置作為測試數(shù)據(jù)放入 xml 中。GWEBlink/spantext(="Web"WebGIMAGESlink/spantext(="Images"Imagesname 表示控件名字, type 為控件的類型, locator 表示控制位置, e
12、xpect_value表示期望值。讀取 xml 的內(nèi)容。 這段代碼屬于我現(xiàn)學(xué)現(xiàn)賣, 直接看了一下 python 對 xml 的支 持,然后自己搗鼓了一下就寫出來了,可以獲取自己需要的 xml 里面的數(shù)據(jù)。fromxml.dom import minidomclassPageData(:def _init_(self, page_name, file: = page_nameself.data = minidom.parse(fileself.xpth_dict = self.XML_Dict(defXML_Dict(self:xpath_dict = fori in self
13、.data.getElementsByTagName(:xpath_dictstr(i.childNodes1.firstChild.nodeValue = str(i.childNodes5.firstChild.nodeValue,str(i.childNodes7.firstChild.nodeValuereturnxpath_dictdefGetLocator(self, object_name:returnself.xpth_dictobject_name0defGetValue(self, object_name:returnself.xpth_dictobjec
14、t_name1最后,主程序里面,我們就能用下面的方式,執(zhí)行我們本來已經(jīng)設(shè)計(jì)好的案例。deftestAutoCompleteFunctionMouseMove(self:'''test the function of auto complete. case 2: when user move mouse to the suggestion, there will be a link '''self.initTest("testAutoCompleteFunctionMouseMove"self.open('GoogleH
15、omePage = data_parser.PageData("GoogleHomePage", self.data_fileself.Type(GoogleHomePage.GetLocator('SEARCHTEXT', 's'GoogleAutoComplete = data_parser.PageData("AutoCompleteCase", self.data_file self.isElementPresent(GoogleAutoComplete.GetLocator("SUGGESTIONFIE
16、LD"time.sleep(10self.MouseMove(GoogleAutoComplete.GetLocator("SUGGESTIONONEFORS"expect_text = "I'm Feeling Lucky »"self.assertLogTrue(self.isTextPresent(expect_text, "The text %s has been displayed" %expect_textself.MouseMove(GoogleAutoComplete.GetLocator("SUGGESTIONTWOFORS"time.sleep(10self.assertLogTrue(self.isTextPresent(e
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技助力下的土地資源保護(hù)與利用研究
- 小米醋發(fā)酵過程中優(yōu)良菌種的篩選及發(fā)酵劑的復(fù)配
- 2型糖尿病患者甲狀腺結(jié)節(jié)與25羥維生素D水平關(guān)聯(lián)性研究
- 社區(qū)藝術(shù)景觀設(shè)計(jì)與居民幸福感提升
- 生物質(zhì)電廠灰對混凝土的耐久性能影響研究
- 高錳酸鈉企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略研究報(bào)告
- 頁巖氣開采企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報(bào)告
- 基于視觸感知協(xié)同的多指靈巧手抓取方法研究
- LiF-REF3體系熔鹽電解制備(LaCe)-Fe合金及其電化學(xué)機(jī)理研究
- 減肥激勵(lì)獎(jiǎng)勵(lì)機(jī)制行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 2025年中國聯(lián)通上海市分公司招聘130人高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 2025年河南質(zhì)量工程職業(yè)學(xué)院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 2024-2025學(xué)年第二學(xué)期學(xué)校全面工作計(jì)劃
- 2025年中國spa行業(yè)市場全景分析及投資前景展望報(bào)告
- GB 45187-2024墜落防護(hù)動力升降防墜落裝置
- 2024年青島港灣職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年參考題庫含答案解析
- 環(huán)保行業(yè)環(huán)保管理制度環(huán)保責(zé)任落實(shí)制度
- 2025年山東菏投建設(shè)集團(tuán)招聘筆試參考題庫含答案解析
- 市政質(zhì)量員繼續(xù)教育考試題庫集(含答案)
- 售后工程師述職報(bào)告
- 《公司法完整版》課件2024
評論
0/150
提交評論