在拜读虫师大神的Selenium2+Python2.7时,发现生成HTMLTestRunner的测试报告使用的HTMLTestRunner的模块是用的Python2的语法。而我本人比较习惯与Python3。而且自己也是用的Python3.4的环境,在网上找了很多资料,修改了下HTMLTestRunner.py

参考:http://bbs.chinaunix.net/thread-4154743-1-1.html

下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html

修改后HTMLTestRunner下载地址:http://pan.baidu.com/s/1tp3Ts


修改汇总:

第94行    import StringIO
修改成    import io
第539行    self.outputBuffer = StringIO.StringIO()
修改成     self.outputBuffer= io.StringIO()
第642行    if not rmap.has_key(cls):
修改成     if notcls in rmap:
第766行    uo = o.decode('latin-1')
修改成     uo = e
第775行    ue = e.decode('latin-1')
修改成     ue = e
第631行    print >> sys.stderr, '\nTime Elapsed: %s' %(self.stopTime-self.startTime)
修改成     print(sys.stderr, '\nTimeElapsed: %s' % (self.stopTime-self.startTime))

详细修改过程如下图:

在Python3.4下使用HTMLTestRunner,开始时,引入HTMLTestRunner模块报错。

在HTMLTestRunner的94行中,是使用的StringIO,但是Python3中,已经没有StringIO了。取而代之的是io.StringIO。所以将此行修改成import io

在HTMLTestRunner的539行中

self.outputBuffer =StringIO.StringIO()

修改成

self.outputBuffer = io.StringIO()

修改以后,成功引入模块了

执行测试脚本:

#引入webdriver和unittest所需要的包from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.support.ui import Selectfrom selenium.common.exceptions import NoSuchElementExceptionfrom selenium.common.exceptions import NoAlertPresentExceptionimport unittest, time, re

#引入HTMLTestRunner包import HTMLTestRunner   

class Baidu(unittest.TestCase):    #初始化设置    def setUp(self):        self.driver = webdriver.Firefox()        self.driver.implicitly_wait(30)        self.base_url = "http://www.baidu.com/"        self.verificationErrors = []        self.accept_next_alert = True

    #百度搜索用例    def test_baidu(self):        driver = self.driver        driver.get(self.base_url)        driver.find_element_by_id("kw").click()        driver.find_element_by_id("kw").clear()        driver.find_element_by_id("kw").send_keys("Selenium Webdriver")        driver.find_element_by_id("su").click()        time.sleep(2)        driver.close()

    def tearDown(self):        self.driver.quit()        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":    #定义一个测试容器    test = unittest.TestSuite()

    #将测试用例,加入到测试容器中    test.addTest(Baidu("test_baidu"))

    #定义个报告存放的路径,支持相对路径    file_path = "F:\\RobotTest\\result.html"    file_result= open(file_path, 'wb')

    #定义测试报告    runner = HTMLTestRunner.HTMLTestRunner(stream = file_result, title = u"百度搜索测试报告", description = u"用例执行情况")

    #运行测试用例    runner.run(test)    file_result.close()

运行测试脚本后,发现报错:

File"C:\Python34\lib\HTMLTestRunner.py", line 642, in sortResultif not rmap.has_key(cls):

所以前往642行修改代码:

运行后继续报错:

AttributeError: 'str' object has noattribute 'decode'

前往766,772行继续修改(注意:766行是uo而772行是ue,当时眼瞎,没有注意到这些,以为是一样的,导致报了一些莫名其妙的错误,折腾的半天):

修改后运行,发现又报错:

File"C:\Python34\lib\HTMLTestRunner.py", line 631, in run   print >> sys.stderr, '\nTime Elapsed: %s' %(self.stopTime-self.startTime)TypeError: unsupported operand type(s)for >>: 'builtin_function_or_method' and '_io.TextIOWrapper'

前往631查看,发现整个程序中,唯一一个print:

print >> sys.stderr, '\nTimeElapsed: %s' % (self.stopTime-self.startTime

这个是2.x的写法,咱们修改成3.x的print,修改如下:

print(sys.stderr, '\nTime Elapsed: %s' %(self.stopTime-self.startTime))

继续运行脚本,OK运行成功

查看指定的目录生成了result.html

点击打开报告:

转载于:https://blog.51cto.com/hzqldjb/1590802

HTMLTestRunner修改Python3的版本相关推荐

  1. ubuntu python3.7修改默认pip版本_Ubuntu16.04安装Python3.7及其pip3并切换为默认版本

    0.配置依赖环境,如果不进行这步可能会出现一些问题中间可能有多余空格,去除下再运行,一般都能安装成功,如果不能可以先更新下sudo apt-get update sudo apt-get instal ...

  2. ubuntu python3.7修改默认pip版本_详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本 安装python3后使用pip和pip3的区别...

    Python3.4已经默认安装了pip为什么执行不了我的谁说过,念念不忘就该放.但我也记得你说过,爱一个人不是一天两天的事. 如何升级到python3版本并且安装pip3 确保你的系统上已经安装好了 ...

  3. python3最新版本-mac下安装Python3.*(最新版本)

    前言:mac系统自带python,不过以当前mac系统的最新版本为例,自带的python版本都是2.*版本,虽然不影响老版本项目的运行,但是python最新的3.*版本的一些语法与2.*版本并不相同, ...

  4. python3各个版本是通用的吗-python3各版本

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 目录编码输入输出中文除法长整形内置函数mapxrangeinitredu ...

  5. Python3.7版本unittest框架添加用例的方法

    1.实例demo是用谷歌浏览器在百度首页搜python的动作脚本:     BaiDu_test是指脚本中自己定义的类名,test_get是指你的类中定义的testcase方法. 在if name函数 ...

  6. Python3.9版本发布,不同领域的程序员如何学Python?

    Python又有新动作,于近日发布3.9第4个alpha开源版本,原文较长,异步君带大家来速览一下! Dict 新功能,更灵活的函数和变量注解 Dict:增加 Union 计算:灵活的函数和变量注解: ...

  7. Ubuntu 修改默认 Python版本

    目录 1 查看Python版本 2 用户级修改 3 系统级修改 3.1 基于软链接 3.2 基于update-alternatives 4 pip错误 1 查看Python版本 先查看系统中有那些Py ...

  8. linux的python2.7安装pip的三种方式,Linux(Centos)在装有Python2的情况下安装Python3 两版本并存,安装完python3后pip、pip2都指向了python3

    安装pip的三种方式 pip是python的一个工具,用来安装python包特别方便. Linux系统是是内置python程序,因为许多Linux内置文件都是使用python来编写的,比如说yum. ...

  9. Windows下安装python2和python3多版本教程 转

    Windows下安装python2和python3多版本教程   转 作者:云游道士 字体:[增加 减小] 类型:转载 时间:2017-03-30 我要评论 这篇文章主要介绍下Windows(我用的W ...

  10. python3各版本区别-Python2 与Python3的版本区别实例分析

    本文实例讲述了Python2 与Python3的版本区别.分享给大家供大家参考,具体如下: 现在还有些开源模块还没有更新到python3 ,不了解版本区别,无法对不合适的地方进行更改. 由于只追求向P ...

最新文章

  1. Linux0.11进程切换和TSS结构
  2. IBM收购Clearleap,提供云视频服务
  3. 详解STL中的空间配置器(SGI版本)
  4. feign使用_Feign:介绍与使用
  5. SQL SERVER 2008的top增强
  6. [DiMP跟踪算法]代码学习笔记
  7. windows 下杀手tomcat 进程
  8. JVM内存管理及垃圾回收
  9. CSS(PS切图、学成在线案例)
  10. opengl 读取obj模型
  11. Flutter 外接纹理
  12. echarts 饼图、柱状图、折线图 切换
  13. Windows 7自带的显示器校准
  14. 复数与三角函数的转换
  15. 《华为数据之道》-第7章 打造“数字孪生”的数据全量感知能力
  16. 总结MongoDB采用MongoRepository进行查询
  17. ubuntu更新软件包
  18. Android 基础 UI 界面设计
  19. ubuntu16.04卸载ceres
  20. 腾讯地图InfoWindow太大

热门文章

  1. 智能优化算法:非洲秃鹫优化算法-附代码
  2. 【Tensorflow】tensorboard小结
  3. scikit-learn 算法的通用形式
  4. pandas 筛选出满足条件的行并赋值
  5. oracle导出1000万数据,1000万条数据,最好用什么工具做,是sql,还是oracle,抑或vfp?...
  6. EMNLP2020文档级关系抽取模型GLRE 论文Global-to-Local Neural Networks for Document-Level Relation Extraction
  7. 阿里内部员工,排查Java问题常用的工具单
  8. 2019年9月全国程序员工资统计,值得参考
  9. Math源码java_从零开始的Java学习记录(26)——Math类及其些许源码
  10. git如何选择性合并_看小姐姐用动图展示10大Git命令