上一篇是生成测试报告的代码,如果重复运行测试报告名称相同会不停的覆盖,之前的测试报告也会丢失,无法追溯之前的问题。那么如何解决这个问题了呢?
首先想到的是用随机函数取随机名称,一旦生成的报告较多时,无法分清报告的先后顺序,于是可以利用python自带的时间函数生成当前的时间来命名测试报告,那么上面的问题就全部解决了。当然你也可以用来
解决类似的事情,比如爬虫爬取下来的文件命名,可以用时间加文件类型命名。。。话不多说上代码
1 >>> import time 2 >>> time.time() 3 1577015630.9973366 4 >>> time.ctime() 5 @H_301_26@'@H_301_26@Sun Dec 22 19:53:55 2019@H_301_26@' 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(@H_301_26@"@H_301_26@%Y/%m/%d %H:%M:%S@H_301_26@") 9 @H_301_26@2019/12/22 19:55:03@H_301_26@'
time.time() #获取当前时间搓
time.ctime() #获取当前时间的字符串形式
time.localtime() #当前时间的struct_time形式
time.strftime() #当前时间,并转换为字符串格式
1 unittest 2 3 from HTMLTestRunner HTMLTestRunner 4 5 now = time.strftime(@H_301_26@%Y-%m-%d %H_%M_%S@H_301_26@)#一定不要包括禁止使用的文件名特殊符号 6 test_dir = @H_301_26@./@H_301_26@'#当前路径 7 discover = unittest.defaultTestLoader.discover(test_dir,pattern=@H_301_26@iot_*.py@H_301_26@')iot_*.py包含测试用例的名称 8 filename = test_dir + now + @H_301_26@iot.html@H_301_26@ 9 fp = open(filename,@H_301_26@wb@H_301_26@")报告存放的路径 10 runner = HTMLTestRunner(stream=fp,title=@H_301_26@科信云测试报告@H_301_26@',description=@H_301_26@测试用例情况:@H_301_26@11 runner.run(discover) 12 fp.close()
这里遇到了一个坑,生成的测试报告名称不能带有/和:等一些特殊字符,否则会报以下错误