测试报告生成(四)
使用python+selenium写好测试代码之后,对所要测试的web界面进行测试,测试完成之后,下一步需要考虑的就是如何将测试的结果信息生成测试报告。
在网上找了好多资料,发现大家采用的时HTMLTestRunner.py进行测试报告的生成,下载地址
一、修改HTMLTestRunner.py文件
下载完后,发现此文件使用python2编写,而本地使用的是python3,所以要对该代码做出修改,修改内容为:
1、94行,import StringIO修改为:import io,相应地539行改为:self.outputBuffer = io.BytesIO()
2、118行,self.fp.write(s) 修改为self.fp.write(bytes(s,'UTF-8'))
3、631行,print >>sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)修改为print('\nTime Elapsed: %s' % (self.stopTime-self.startTime),file=sys.stderr)
4、642行,if not rmap.has_key(cls):修改为:if not cls in rmap:
5、766行,uo = o.decode('latin-1')修改为 uo = o,768行,uo = o改为uo = o.decode('UTF-8')
772行,ue = e.decode('latin-1')修改为 ue = e,774行,ue = e改为ue = e.decode('UTF-8')
至于为什么这样修改,python3与python2有些语法不通,可根据出现的语法问题,进行定位。
二、导入
把HTMLTestRunner.py文件放置在python35下的lib文件夹下。
如果本地的Python lib文件目录无法找到,如图示,将该文件拷入lib目录
然后importHTMLTestRunner,当输入import时,就可看到有提示出现。
三、代码测试
#coding=utf-8 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import Select import unittest import time import HTMLTestRunner class JD(unittest.TestCase): def setUp(self): self.browser=webdriver.Chrome() self.browser.implicitly_wait(30) self.base_url="https://www.jd.com/" self.verficationErrors=[] self.accept_next_alert=True def Login(self): browser=self.browser browser.get(self.base_url+'/') browser.maximize_window() browser.execute_script('javascript:login()') if __name__=="__main__": #unittest.main() testunit=unittest.TestSuite() #将测试用例加入到测试容器中 testunit.addTest(JD("Login")) #获取当前时间,这样便于下面的使用。 now = time.strftime("%Y-%m-%M-%H_%M_%S",time.localtime(time.time())) #打开一个文件,将result写入此file中 fp=open("result"+now+".html",'wb') runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title='test result',description=u'result:') runner.run(testunit) fp.close()
四、测试报告
测试报告界面有点不好看,后续进行改进。执行用例结果为error。再改进吧!