【环境信息】
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文件。
源地址: 这是针对Python2.7版本,那么对于Python3.x的使用,需要改动几处。
同时谢谢 的分享。
具体改动如下:
第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 time12 import re13 #加载HTMLTestRunner,用于生成HTMLreuslt14 import HTMLTestRunner15 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=True23 def Login(self):24 browser=self.browser25 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.browser39 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.browser46 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()