HTMLTestRunner修改Python3的版本
在拜读虫师大神的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))
转载于:https://blog.51cto.com/hzqldjb/1590802
HTMLTestRunner修改Python3的版本相关推荐
- ubuntu python3.7修改默认pip版本_Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
0.配置依赖环境,如果不进行这步可能会出现一些问题中间可能有多余空格,去除下再运行,一般都能安装成功,如果不能可以先更新下sudo apt-get update sudo apt-get instal ...
- ubuntu python3.7修改默认pip版本_详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本 安装python3后使用pip和pip3的区别...
Python3.4已经默认安装了pip为什么执行不了我的谁说过,念念不忘就该放.但我也记得你说过,爱一个人不是一天两天的事. 如何升级到python3版本并且安装pip3 确保你的系统上已经安装好了 ...
- python3最新版本-mac下安装Python3.*(最新版本)
前言:mac系统自带python,不过以当前mac系统的最新版本为例,自带的python版本都是2.*版本,虽然不影响老版本项目的运行,但是python最新的3.*版本的一些语法与2.*版本并不相同, ...
- python3各个版本是通用的吗-python3各版本
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 目录编码输入输出中文除法长整形内置函数mapxrangeinitredu ...
- Python3.7版本unittest框架添加用例的方法
1.实例demo是用谷歌浏览器在百度首页搜python的动作脚本: BaiDu_test是指脚本中自己定义的类名,test_get是指你的类中定义的testcase方法. 在if name函数 ...
- Python3.9版本发布,不同领域的程序员如何学Python?
Python又有新动作,于近日发布3.9第4个alpha开源版本,原文较长,异步君带大家来速览一下! Dict 新功能,更灵活的函数和变量注解 Dict:增加 Union 计算:灵活的函数和变量注解: ...
- Ubuntu 修改默认 Python版本
目录 1 查看Python版本 2 用户级修改 3 系统级修改 3.1 基于软链接 3.2 基于update-alternatives 4 pip错误 1 查看Python版本 先查看系统中有那些Py ...
- linux的python2.7安装pip的三种方式,Linux(Centos)在装有Python2的情况下安装Python3 两版本并存,安装完python3后pip、pip2都指向了python3
安装pip的三种方式 pip是python的一个工具,用来安装python包特别方便. Linux系统是是内置python程序,因为许多Linux内置文件都是使用python来编写的,比如说yum. ...
- Windows下安装python2和python3多版本教程 转
Windows下安装python2和python3多版本教程 转 作者:云游道士 字体:[增加 减小] 类型:转载 时间:2017-03-30 我要评论 这篇文章主要介绍下Windows(我用的W ...
- python3各版本区别-Python2 与Python3的版本区别实例分析
本文实例讲述了Python2 与Python3的版本区别.分享给大家供大家参考,具体如下: 现在还有些开源模块还没有更新到python3 ,不了解版本区别,无法对不合适的地方进行更改. 由于只追求向P ...
最新文章
- Linux0.11进程切换和TSS结构
- IBM收购Clearleap,提供云视频服务
- 详解STL中的空间配置器(SGI版本)
- feign使用_Feign:介绍与使用
- SQL SERVER 2008的top增强
- [DiMP跟踪算法]代码学习笔记
- windows 下杀手tomcat 进程
- JVM内存管理及垃圾回收
- CSS(PS切图、学成在线案例)
- opengl 读取obj模型
- Flutter 外接纹理
- echarts 饼图、柱状图、折线图 切换
- Windows 7自带的显示器校准
- 复数与三角函数的转换
- 《华为数据之道》-第7章 打造“数字孪生”的数据全量感知能力
- 总结MongoDB采用MongoRepository进行查询
- ubuntu更新软件包
- Android 基础 UI 界面设计
- ubuntu16.04卸载ceres
- 腾讯地图InfoWindow太大
热门文章
- 智能优化算法:非洲秃鹫优化算法-附代码
- 【Tensorflow】tensorboard小结
- scikit-learn 算法的通用形式
- pandas 筛选出满足条件的行并赋值
- oracle导出1000万数据,1000万条数据,最好用什么工具做,是sql,还是oracle,抑或vfp?...
- EMNLP2020文档级关系抽取模型GLRE 论文Global-to-Local Neural Networks for Document-Level Relation Extraction
- 阿里内部员工,排查Java问题常用的工具单
- 2019年9月全国程序员工资统计,值得参考
- Math源码java_从零开始的Java学习记录(26)——Math类及其些许源码
- git如何选择性合并_看小姐姐用动图展示10大Git命令