上一篇是生成測試報告的代碼,如果重復運行測試報告名稱相同會不停的覆蓋,之前的測試報告也會丟失,無法追溯之前的問題。那么如何解決這個問題了呢?
首先想到的是用隨機函數取隨機名稱,一旦生成的報告較多時,無法分清報告的先后順序,於是可以利用python自帶的時間函數生成當前的時間來命名測試報告,那么上面的問題就全部解決了。當然你也可以用來
解決類似的事情,比如爬蟲爬取下來的文件命名,可以用時間加文件類型命名。。。話不多說上代碼
1 >>> import time 2 >>> time.time() 3 1577015630.9973366 4 >>> time.ctime() 5 'Sun Dec 22 19:53:55 2019' 6 >>> time.localtime() 7 time.struct_time(tm_year=2019, tm_mon=12, tm_mday=22, tm_hour=19, tm_min=54, tm_sec=3, tm_wday=6, tm_yday=356, tm_isdst=0) 8 >>> time.strftime("%Y/%m/%d %H:%M:%S") 9 '2019/12/22 19:55:03'
time.time() #獲取當前時間搓
time.ctime() #獲取當前時間的字符串形式
time.localtime() #當前時間的struct_time形式
time.strftime() #當前時間,並轉換為字符串格式
運用上面的時間函數添加到之前的代碼來,修改測試報告的名稱。
1 import unittest 2 import time 3 from HTMLTestRunner import HTMLTestRunner 4 5 now = time.strftime("%Y-%m-%d %H_%M_%S")#一定不要包括禁止使用的文件名特殊符號 6 test_dir = './'#當前路徑 7 discover = unittest.defaultTestLoader.discover(test_dir, pattern='iot_*.py')#iot_*.py包含測試用例的名稱 8 filename = test_dir + now + 'iot.html' 9 fp = open(filename,"wb")#報告存放的路徑 10 runner = HTMLTestRunner(stream=fp, title='科信雲測試報告',description='測試用例情況:') 11 runner.run(discover) 12 fp.close()
這里遇到了一個坑,生成的測試報告名稱不能帶有/和:等一些特殊字符,否則會報以下錯誤

