调用HtmlTestRunner生成测试报告为空

时间:2021-10-08 18:26:16

【环境信息】

Python3.6+selenium3.0.2+HtmlTestRunner0.8+Firefox50+Win7

【问题描述】

1.HtmlTestrunner是unittest的一个扩展,目前在网上下载的版本是0.8,由于和Python3存在不兼容的地方,所以运行时会报错或报告为空。

【解决方案】

1.参考博客:http://blog.csdn.net/liujingqiu/article/details/50518776

根据该博客的描述,修改HtmlTestrunner.py文件后再运行脚本。

博客正文粘贴如下(博客为转载:http://blog.csdn.net/liujingqiu/article/details/50518776)

 首先,下载HTMLTestRuner.py文件。

源地址:http://tungwaiyip.info/software/HTMLTestRunner.html 这是针对Python2.7版本,那么对于Python3.x的使用,需要改动几处。

同时谢谢 http://www.bubuko.com/infodetail-529431.html的分享。

具体改动如下:

第94行,将import StringIO修改成import io

第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer= io.StringIO()

第631行,将print >> sys.stderr, ‘\nTime Elapsed: %s‘ %(self.stopTime-self.startTime)修改成print(sys.stderr, ‘\nTimeElapsed: %s‘ % (self.stopTime-self.startTime))

第642行,将if not rmap.has_key(cls):修改成if not cls in rmap:

第766行,将uo = o.decode(‘latin-1‘)修改成uo = e

第775行,将ue = e.decode(‘latin-1‘)修改成ue = e

第778行,将output = saxutils.escape(uo+ue),修改成output = saxutils.escape(str(uo)+str(ue)),

将上述几处改动,保存成功后,再将HTMLTestRunner.py放到C:\Python34\Lib目录中,检验是否加载成功,在Python IDLE 中输入 import HTMLTestRunner  若无报错,那么加载成功。

 

【参考案例】

1.登录百度云
2.进入“立即注册百度账号”网页
3.进入”会员中心”网页
4.生成测试报告的文件名为:2015-01-02result.html。

 1 #coding=utf-8      #防止中文乱码
 2 from selenium import webdriver
 3 from selenium.webdriver.common.by import By
 4 #加载键盘使用的模块
 5 from selenium.webdriver.common.keys import Keys
 6 from selenium.webdriver.support.ui import Select
 7 from selenium.common.exceptions import NoSuchElementException
 8 
 9 #加载unittest模块
10 import unittest 
11 import time
12 import re
13 #加载HTMLTestRunner,用于生成HTMLreuslt
14 import HTMLTestRunner
15 
16 class BaiduYun(unittest.TestCase):
17     def setUp(self):
18         self.browser=webdriver.Chrome()
19         self.browser.implicitly_wait(30)
20         self.base_url="http://yun.baidu.com"
21         self.verficationErrors=[]
22         self.accept_next_alert=True
23     def Login(self):
24         browser=self.browser
25         browser.get(self.base_url+'/')
26         u"""百度云登录"""
27         browser.find_element_by_name("userName").clear()           
28         username=browser.find_element_by_name("userName")              
29         username.send_keys("alu***")
30         username.send_keys(Keys.TAB)
31         time.sleep(2)
32         password=browser.find_element_by_name("password")
33         password.send_keys("***")
34         password.send_keys(Keys.ENTER)
35         time.sleep(3)
36         browser.close()
37     def Register(self):
38         browser=self.browser
39         browser.get(self.base_url+'/')
40         u"""立即注册百度账号"""
41         browser.find_element_by_class_name("link-create").click()
42         time.sleep(2)
43         browser.close()
44     def Link(self):
45         browser=self.browser
46         browser.get(self.base_url+'/')
47         u"""会员中心"""
48         browser.find_element_by_link_text("会员中心").click()
49         time.sleep(2)
50         browser.close()
51     def tearDown(self):
52         self.browser.quit()
53         self.assertEqual([],self.verficationErrors) 
54 if __name__=="__main__":
55     #unittest.main()
56     testunit=unittest.TestSuite()
57     #将测试用例加入到测试容器中
58     testunit.addTest(BaiduYun("Login"))
59     testunit.addTest(BaiduYun("Register"))
60     testunit.addTest(BaiduYun("Link"))
61     #获取当前时间,这样便于下面的使用。
62     now = time.strftime("%Y-%m-%M-%H_%M_%S",time.localtime(time.time())) 
63     #打开一个文件,将result写入此file中
64     fp=open("result"+now+".html",'wb')
65     runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title='test result',description=u'result:')
66     runner.run(testunit) 
67     fp.close()