生成html測試報告中關於檔名的坑
最近學習python+selenium實戰,在生成html測試報告檔案時,由於程式碼寫的與書尚不完全一致,導致出現執行失敗的問題,在此記錄:
生成html測試報告的過程:
(1)line94:
import StringIO--->import io
(2)line539:
self.outputBuffer=StringIO.StringIO()--->self.outputBuffer=io.StringIO()
(3)line631:
print >> sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime) --->
print (sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))
(4)line642:
if not rmap.has_key(cls): --->if not cls in rmap:
(5)line766:
uo =o.decode('latin-1') ---> uo=e
(6)line772:
ue = e.encode('latin-1') --->ue = e
3.案例:百度搜索的測試用例來生成html測試報告
step1:建立htmlRepoert_baidu.py,程式碼如下
step2:匯入HTMLTestRunner,unittest等
#匯入HTMLTestRunner from selenium import webdriver import unittest from HTMLTestRunner import HTMLTestRunner import time from _io import open #測試點選百度,生成html報告 #定義類繼承unittest.TestCase class Baidu(unittest.TestCase): '''百度搜索測試生成html報告''' #定義setup()設定驅動,定義變數 def setUp(self): #設定驅動 self.driver =webdriver.Firefox(executable_path="D:\\Program Files (x86)\\Mozilla Firefox32\\firefox.exe") #設定隱式等待時間 self.driver.implicitly_wait(10) #設定要訪問的url self.base_url ="http://www.baidu.com" #定義要測試方法 def test_baidu_search(self): '''測試搜尋HTMLTestRunner''' #獲取驅動 driver = self.driver #訪問url driver.get(self.base_url) #搜尋等操作 driver.find_element_by_id("kw").send_keys("HTMLTestRunner") driver.find_element_by_id("su").click() #釋放資源 def tearDown(self): self.driver.quit() #利用unittest執行單元測試 if __name__ == "__main__": #建立測試集 testSuite = unittest.TestSuite() #新增測試案例 testSuite.addTest(Baidu("test_baidu_search")) #定義測試報告存放的位置和名稱
#給檔名新增時間,防止被覆蓋更新,需要先匯入time模組的包
now = time.strftime("%Y_%m_%d_%H:%M:%S")
fileName = "./"+ now + "result.html"
htmlFilePos = open(fileName,"wb")
#定義具體的測試報告
runner = HTMLTestRunner(stream=htmlFilePos,title="百度搜索的測試報告",description="用例執行情況:")
#執行測試用例
runner.run(testSuite)
#關閉報告檔案
htmlFilePos.close()
4.執行之後報錯資訊:
Traceback (most recent call last):
File "D:\study-test\java_test_mar\pySeleniumBook\src\chap08\CreateHtmlReport\htmlReport_Baidu.py", line 53, in <module>
htmlFilePos = open(fileName,"wb")
OSError: [Errno 22] Invalid argument: './2018_06_08_09:29:43result.html'
由於是初學,python語言語法不清晰,認真檢查了與書上的寫法對比+度娘沒查出來那裡寫錯了,跑去問同學她也納悶了會,好像沒錯的呀,過了會跟我說你是不是檔名拼錯了,我說不造QAQ,然後她跟我發了張度孃的圖:
5.深坑所在:windows的檔名不能包含冒號!多麼痛的領悟。
#給檔名新增時間,防止被覆蓋更新,需要先匯入time模組的包
now = time.strftime("%Y_%m_%d_%H:%M:%S")
6.然後我度娘了一下window檔名規範,手敲一遍:
(1)格式:主檔名.副檔名
(2)檔名最多達255字元
(3)可用多間隔符的副檔名,如:a.b.c作為檔名
(4)檔名可包含空格,但是不能包含?:*"/;<>
(5)不區分大小寫和中英文