最近难得有空闲,可以学习研究下python+selenium。我从一开始就是跟随虫师的书本《selenium2 python自动化测试》,选择他的书本其一是实操性强,其二是可选择不多,看着他的入门快而且可以比较系统性地每天学习一点点。
中间学习到自动运行用例发邮件的地方,书本里截图如此说明:
我个人不能接受发送上一次运行结果,总觉得可以找到方法即时运行结束发送本次报告,于是我去找HTMLTestRunner里的说明与实现,感觉没啥问题。
暂停了2天,某天百度有个人说的是其他的问题,大意就是他生成的报告打不开,于是加了个f.close()立马就可以了。
于是我立马意识到卡住的问题也许就是作者没有关闭写日志文件导致的问题,书本代码一检查果然如此,我在书本案例代码上稍作修改立马就OK了,运行完就发送本次报告而且是完整的报告。
以下是我修改后的片段代码:
1 # coding=utf-8 2 import unittest,time,os 3 import HTMLTestRunner #引入HTMLTestRunner包 4 #把public目录添加到path下,这里用的相对路径 5 import send_mail 6 7 8 listaa='.\\test_case2' 9 def createsuitel():10 testunit=unittest.TestSuite()11 #discover方法定义12 discover=unittest.defaultTestLoader.discover(listaa,13 pattern='start_*.py',14 top_level_dir=None)15 16 17 #discover方法筛选出来的用例,循环添加到测试套件中去18 for test_suite in discover:19 for test_case in test_suite:20 testunit.addTests(test_case)21 print testunit22 return testunit23 24 alltestnames=createsuitel()25 26 #定义个报告存放路径,支持相对路径。27 #filename='..\\report\\result2.html'28 #把测试报告结果文件根据生成时间命名29 #取前面时间30 now=time.strftime("%Y-%m-%d-%H_%M_%S",time.localtime(time.time()))31 #把当前时间加到报告中32 filename=".\\report\\"+now+'result.html'33 fp=file(filename,'wb')34 35 runner=HTMLTestRunner.HTMLTestRunner(36 stream=fp,37 title=u"百度搜索测试报告",38 description=u"用例执行情况:"39 )40 41 runner.run(alltestnames)42 fp.close()43 send_mail.sendreport()
其实我改的地方就是
runner.run(alltestnames)这句后面加了下面一句:
fp.close()就可以运行完发送本次运行报告而且是完整的报告。