selenium+python之HTML測試報(bào)告

轉(zhuǎn) http://www.cnblogs.com/huiguniang/p/7154735.html


r一、準(zhǔn)備

1、本節(jié)用到的模塊——HTMLTestRunner

1)下載:下載地址:http://tungwaiyip.info/software/HTMLTestRunner.html

鼠標(biāo)右鍵→目標(biāo)另存為,保存到本地。

2)安裝:將下載的HTMLTestRunner.py文件復(fù)制到Python安裝目錄下即可

...\Python36\Lib

3)驗(yàn)證:在Python交互模式下引入HTMLTestRunner模塊,如系統(tǒng)沒有報(bào)錯(cuò),則說明添加成功

2、修改HTMLTestRunner

因?yàn)镠TMLTestRunner是基于Python2開發(fā)的,如果在Python3環(huán)境下使用,需要對其部分內(nèi)容進(jìn)行修改。使用notepad++打開HTMLTestRunner.py文件,修改如下內(nèi)容:

第94行,將import StringIO修改成import io

第539行,將self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer= io.StringIO()

第631行,將print >> sys.stderr, ‘\nTime Elapsed: %s‘ %(self.stopTime-self.startTime)修改成print(sys.stderr, ‘\nTimeElapsed: %s‘ % (self.stopTime-self.startTime))

第642行,將if not rmap.has_key(cls):修改成if not cls in rmap:

第766行,將uo = o.decode(‘latin-1‘)修改成uo = e

第772行,將ue = e.decode(‘latin-1‘)修改成ue = e

二、生成HTML測試報(bào)告

以百度搜索為例生成HTML測試報(bào)告

1、代碼實(shí)現(xiàn)

#-*- coding: utf-8 -*-fromseleniumimportwebdriverfromHTMLTestRunnerimportHTMLTestRunnerimportunittest,timeclassBaiduIdeTest(unittest.TestCase):defsetUp(self):

self.driver=webdriver.Firefox()

self.driver.implicitly_wait(30)

self.base_url="https://www.baidu.com/"deftest_baidu_ide(self):

driver=self.driver

driver.get(self.base_url)

driver.find_element_by_id("kw").clear()

driver.find_element_by_id("kw").send_keys("HTMLTestRunner")

driver.find_element_by_id("su").click()

time.sleep(5)

self.assertEqual(u"HTMLTestRunner_百度搜索", driver.title)deftearDown(self):

self.driver.quit()if__name__=="__main__":#構(gòu)造測試套件testsuit =unittest.TestSuite()

testsuit.addTest(BaiduIdeTest("test_baidu_ide"))#定義測試報(bào)告存放路徑fp = open('./result.html','wb')#定義測試報(bào)告runner = HTMLTestRunner(stream=fp,

title='自動(dòng)化測試報(bào)告',

description='用例執(zhí)行情況:')

runner.run(testsuit)#關(guān)閉測試報(bào)告fp.close()

2、代碼分析

1)將HTMLTestRunner模塊用import導(dǎo)入進(jìn)來。

2)通過open()方法以二進(jìn)制寫模式('wb')打開當(dāng)前目錄下的result.heml,如果沒有,則自動(dòng)創(chuàng)建。

3)調(diào)用HTMLTestRunner模塊下的HTMLTestRunner類。

stream 指定測試報(bào)告文件

title 定義測試報(bào)告的標(biāo)題

description 定義測試報(bào)告的副標(biāo)題

4)通過HTMLTestRunner的run()方法來運(yùn)行測試套件中的測試用例

5)關(guān)閉測試報(bào)告文件close()

3、代碼效果

4、tips

代碼執(zhí)行的時(shí)候?qū)⑹髽?biāo)放到“if __name__ == "__main__":”右鍵選擇“Run'baidu_ide_text'” 而不要使用“Run untitest in baidu_ide_text'”,否則無法生成測試報(bào)告

三、更易讀的測試報(bào)告

通過Python的doc string類型的注釋增強(qiáng)測試報(bào)告的可度性。

python代碼注釋分為兩種:commen(普通注釋#開頭)和doc string(描述函數(shù)、類和方法三引號表示)

1、代碼實(shí)現(xiàn)

......classBaiduIdeTest(unittest.TestCase):'''百度搜索測試'''defsetUp(self):

self.driver=webdriver.Firefox()

self.driver.implicitly_wait(30)

self.base_url="https://www.baidu.com/"deftest_baidu_ide(self):'''搜索關(guān)鍵字'''driver=self.driver

driver.get(self.base_url)

driver.find_element_by_id("kw").clear()

driver.find_element_by_id("kw").send_keys("HTMLTestRunner")

driver.find_element_by_id("su").click()

time.sleep(5)

self.assertEqual(u"HTMLTestRunner_百度搜索", driver.title)

........

2、代碼效果

四、測試報(bào)告名稱

使用python的time模塊,在報(bào)告名稱中加入當(dāng)前時(shí)間增強(qiáng)測試報(bào)告文件的識別性。

1、知識準(zhǔn)備

time.time():獲取當(dāng)前時(shí)間戳

time.ctime():當(dāng)前時(shí)間的字符串形式

time.location():當(dāng)前時(shí)間的struct_time形式

time.strftime():獲得當(dāng)前時(shí)間,可以將時(shí)間格式化字符串

常用格式化符號:

%Y:帶世紀(jì)的年,2017

%y:不帶世紀(jì)的年,17

%m:月份

%d:天

%H:24小時(shí)制的小時(shí)

%M:分

%S:秒

2、代碼實(shí)現(xiàn)

......if__name__=="__main__":#構(gòu)造測試套件testsuit =unittest.TestSuite()

testsuit.addTest(BaiduIdeTest("test_baidu_ide"))#按照一定格式獲取當(dāng)前時(shí)間now = time.strftime("%Y%m%d_%H%M%S")#將當(dāng)前時(shí)間加入到報(bào)告文件名稱中filename ='./'+now+'result.html'#定義測試報(bào)告存放路徑fp = open(filename,'wb')#定義測試報(bào)告runner = HTMLTestRunner(stream=fp,

title='自動(dòng)化測試報(bào)告',

description='用例執(zhí)行情況:')

runner.run(testsuit)#關(guān)閉測試報(bào)告fp.close()

3、代碼效果

五、項(xiàng)目集成測試報(bào)告

將以上內(nèi)容集成到項(xiàng)目的runtest.py文件中,使其作用于整個(gè)測試項(xiàng)目

1、代碼實(shí)現(xiàn)

#-*- coding: utf-8 -*-fromseleniumimportwebdriverimportunittest, timeclassYoudaoIdeTest(unittest.TestCase):'''有道翻譯測試'''defsetUp(self):

self.driver=webdriver.Firefox()

self.driver.implicitly_wait(30)

self.base_url="http://www.youdao.com/"deftest_youdao_ide(self):'''中英翻譯測試'''driver=self.driver

driver.get(self.base_url)

driver.find_element_by_id("translateContent").clear()

driver.find_element_by_id("translateContent").send_keys(u"自動(dòng)化測試報(bào)告")

driver.find_element_by_css_selector("button").click()

time.sleep(5)

self.assertEqual(u"【自動(dòng)化測試報(bào)告】", driver.title)deftearDown(self):

self.driver.quit()if__name__=="__main__":

unittest.main()

2、代碼效果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容