版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、引子作為一個無 dev 經(jīng)驗的 tester 來說,目前遇到許多新的問題,關(guān)于 tester 以后的人員 基本素質(zhì)的構(gòu)成,現(xiàn)在也有許多說法,在這里,不想過多的鋪開討論了。作為一個 tester , 本身當然必須對 test 這件事情感興趣, 才能把工作做好。 有的人天生喜歡找茬, 喜歡提意見, 在我看來,就是一個不錯的 tester 的料。當你天天對著同一個產(chǎn)品的不同版本不停的測試 的時候,自然會產(chǎn)生一些怨言,由此產(chǎn)生懈怠?!澳承┕δ茳c我都連著測試了 N 個版本了,肯定不會出錯了” “這種基本功能點,怎 么可能出錯” 這樣的論調(diào)是很有可能產(chǎn)生的。 于是, 一個 tester 很有可能在某次 r
2、elease 的 過程中,經(jīng)驗主義的放過了某些功能點的測試。幾天后, 一個用戶反饋上來,那個功能點出 了問題 .“偷懶”這個詞語,在測試過程中,不應該算一個貶義詞 (當然了,故意漏過功能點不 測試,不在此列 。因為“偷懶”催生新的技術(shù), “偷懶”節(jié)省更多的時間。我相信,自動化 測試就是這樣來的。正題任何事情都可以分解為很小的部分, 讓我們先分析一下, 手工執(zhí)行測試案例的一個過程:打開被測軟件執(zhí)行測試案例給出測試結(jié)果然后,我們不斷重復這個過程。最后給出測試報告。顯然, 我們的自動化測試也要滿足上面的這個過程中的所有要求。 既然是自動化, 首先 要求是所有的測試用例可以無人值守運行 ; 其次,每個
3、測試用例都由機器來模擬人對軟件的 操作 ; 第三,某個測試用例失敗不能影響其他測試用例的繼續(xù)執(zhí)行 ; 第四,測試數(shù)據(jù)和測試用 例最好分離開來 ; 最后一點,測試結(jié)束之后,給個報告或者給個圖告知測試結(jié)果。根據(jù)上面的分析,我們逐個來一一解決, 當然了,本篇都是很初級的解決方式,相信有 許多大牛會有更好的方式來解決。無人值守運行,那么 python 的 unittest 的框架就能達到這個目的。模擬人的操作, selenium 可以勝任。測試用例間無影響,同 1數(shù)據(jù)分離,那把測試數(shù)據(jù)都扔 xml 里。待完善 (本例中只是在部分方法中添加錯誤提示 開始動手對 python 的 unittest 進行一
4、些小手術(shù),當然了,如果只追求簡單,直接用也行。 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自己新建一個類,繼承 unittest ,然
8、后修改必要的一些方法,并添加部分方法,譬如設 置 testName 啊,設置標記值來標記 case 知否執(zhí)行結(jié)束啊。這些都是可以根據(jù)自己喜好來加 入的方法。defsetTestName(self, tname:self.testname = tnamedefgetTestName(self:returnself.testnamedefsetCompleted(self:pleted = TruedefisCompleted(self:pleted對于 unittest 框架的修改就寫這么多。對 selenium 的基本方法做一些小改動, 動機優(yōu)化 unittest 框架一致, 只是為了讓你的用
9、 例跑起來的時候更加讓人理解。我們相當于在 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ù)分離,這個做的非常簡單,就是把期望值和控件位置作為測試數(shù)據(jù)放入 xml 中。GWEBlink/spantext(="Web"WebGIMAGESlink/spantext(="Images"Imagesname 表示控件名字, type 為控件的類型, locator 表示控制位置, e
12、xpect_value表示期望值。讀取 xml 的內(nèi)容。 這段代碼屬于我現(xiàn)學現(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)設計好的案例。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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 食品衛(wèi)生安全檢測技術(shù)進展
- 策劃大寒節(jié)氣活動模板
- 財務月報解讀模板
- 碩士生導師訓練模板
- 圣誕新媒體運營報告模板
- 學生會總結(jié)大會主持稿
- 統(tǒng)編版五年級語文上冊寒假作業(yè)(三)(有答案)
- 河北省唐山市2024-2025學年七年級上學期1月期末考試生物試卷(含答案)
- 二零二五年度教育資源共享平臺合作合同2篇
- 二零二五年度智能倉儲系統(tǒng)安裝與物流管理協(xié)議3篇
- 2023年保安公司副總經(jīng)理年終總結(jié) 保安公司分公司經(jīng)理年終總結(jié)(5篇)
- 中國華能集團公司風力發(fā)電場運行導則(馬晉輝20231.1.13)
- 中考語文非連續(xù)性文本閱讀10篇專項練習及答案
- 2022-2023學年度六年級數(shù)學(上冊)寒假作業(yè)【每日一練】
- 法人不承擔責任協(xié)議書(3篇)
- 電工工具報價單
- 反歧視程序文件
- 油氣藏類型、典型的相圖特征和識別實例
- 流體靜力學課件
- 顧客忠誠度論文
- 實驗室安全檢查自查表
評論
0/150
提交評論