HTMLTestRunner.py python 2版本

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

使用时,先建立一个”PyDev Package“,将下载下来的HTMLTestRunner.py文件拷贝在该目录下。

例子:testcase5_dynamic.py

import unittest
from dev.widget import Widgetclass WidgetTestCase(unittest.TestCase):def setUp(self):self.widget=Widget()def tearDown(self):self.widget.dispose()self.widget=Nonedef testSize(self):self.assertEqual(self.widget.getSize(), (40,40), "Wrong")def testResize(self):self.widget.resize(100, 100)self.assertEqual(self.widget.getSize(), (100,100), "Wrong")

html_report.py:

#coding:utf-8from lib import HTMLTestRunner
import unittest
from testcase5_dynamic import WidgetTestCaseif __name__=='__main__':suite=unittest.makeSuite(WidgetTestCase)filename='D:\\myreport.html'fp=file(filename,'wb')runner=HTMLTestRunner.HTMLTestRunner(fp,title=u'my unit test',description=u'This is a report test')runner.run(suite)

Run的时候,需要使用Python Run,使用Python unit-test跑测试生成不了myreport.html,目前还不知道为什么。

有时候,不会立即生成D:\\myreport.html,我们可以自己先建立一个空的myreport.html,这样再运行之后打开就会看到报告内容。

HTMLTestRunner.py 的python3 版本

由于 HTMLTestRunner.py 原本就是python2版本,目前还没找到python3版本,所以需要我们自己修改 HTMLTestRunner.py 文件。

1. 修改的地方

问题一:No module named StringIO

原因:python 3 中 没有 StringIO 这个模块。这里我们需要使用io 这个模块来代替。

解决方法:

第94行引入的名称要改,从 import StringIO 改成import io。

相应的,539行 self.outputBuffer = StringIO.StringIO() 要改成self.outputBuffer = io.BytesIO()

问题二:AttributeError: 'dict' object has no attribute 'has_key'

原因:python 3 字典类型的object 已经不支持 has_key函数,我们需要使用in 来进行遍历。

解决方法:

定位到642行,if not rmap.has_key(cls): 需要换成 if not cls in rmap:

问题三:'str' object has no attribute 'decode'

原因:python3 里面对字符的操作中,decode已经拿掉了。

解决方法:

定位到772行,把 ue = e.decode('latin-1') 直接改成 ue = e 。

另外766还有类似的uo = o.decode('latin-1'),改成 uo=o ;

问题四 :TypeError: can't concat bytes to str

原因:定位一下,报在了778行的内容escape(uo+ue) 。这是因为我们上面给uo赋值的时候,走的是else流程,uo被赋值的是bytes类型的值。 而bytes类型不能直接转化为str类型。所以我们需要在前面给uo赋值的时候先将bytes类型转换为 str类型。

解决方法:

修改768行的 uo = o ,直接改成 uo = o.decode('utf-8') 。

另外 774还有类似的  ue = e, 改成 ue = e.decode('utf-8')。

问题五:TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and 'RPCProxy'

原因: python3  不支持 print >> sys.stderr 这种写法,这里定义输出流的话,采用print("This is print str",file=sys.stderr) 这种方式。

解决方法:

定位到631行,把print的语句修改掉,原来是print >>sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime), 可改成 print('\nTime Elapsed: %s' % (self.stopTime-self.startTime),file=sys.stderr)

问题六:TypeError: 'str' does not support the buffer interface

原因:定位一下,问题出在118行,这里s是str类型,我们需要把传过来的s转化为bytes类型。

解决方法:

定位到118行,把 self.fp.write(s) 修改为 self.fp.write(bytes(s,'UTF-8')) 即可。

2. 保存

修改后对HTMLTestRunner.py 保存一下。

3. 调用语句更改

python3 里面打开文件使用 open,不要再去用file了。

即 fp = file(filename,'wb')替换成 fp = open(filename,'wb');

关闭该文件可用fp.close()

备注: 改动之后,中文也不会乱码。

HTMLTestRunner.py 的使用备注

1. 问题: 执行测试用例的过程中,不会打印任何东西,导致上个厕所或第二天回来时,根本不知道执行到哪了,或者执行多少测试用例了。

解决思路: 每次执行一个测试用例时,就打印该测试用例的名称。

解决方案: 调用HTMLTestRunner时,定义 verbosity 为大于1的整数,比如说 2:

runner=HTMLTestRunner.HTMLTestRunner(fp,title="xxxx",description="xxx",verbosity=2)

在控制台console 就可以看到每执行一条用例,就会有如下输出:

E  test (testcases.login.testcase1.MyTest)
ok  test (testcases.login.testcase2.MyTest)
F  test (testcases.login.testcase3.MyTest)

2. HTMLTestRunner 脚本阅读。

class OutputRedirector(object)
# 将输出进行重定向class Template_mixin(object)
# 定义生成HTML结果文件所需要的模板。
# 如果我们想改变HTML的格式等待,可以在这里进行改动class _TestResult(TestResult)
# 定义继承自 unittest.TestResult 的 类。
# 这里重写了 unittest.TestResult 的多个方法,比如 startTest(self, test) 等等class HTMLTestRunner(Template_mixin)
# 这里可以说是使用 HTMLTestRunner.py 的入口。定义了多个我们可以看到的方法,比如 run(self, test)class TestProgram(unittest.TestProgram)
# 这里继承自 unittest.TestProgram 类,重写了 runTests 方法。
# 用于命令行执行测试

3. 缺点:使用HTMLTestRunner的执行测试用例的过程中,如果中间中断执行,则已经执行完的用例结果也不会打印到html文件。

目前我这边是自己编写脚本生成html来代替使用 HTMLTestRunner ,感觉 HTMLTestRunner 应该没有每执行一条用例就讲结果写入到html结果文件的方法。

转载于:https://www.cnblogs.com/miniren/p/5301081.html

使用 HTMLTestRunner.py相关推荐

  1. Mac python3.x使用HTMLTestRunner.py生成html格式的测试报告

    HTMLTestRunner.py下载地址:https://download.csdn.net/download/dou_being/10487101 下载HTMLTestRunner.py后,将文件 ...

  2. Mac python3.x使用HTMLTestRunner.py

    首先去下载HTMLTestRunner.py 下载HTMLTestRunner.py后,将文件放到python3的安装目录下即可调用. 步骤: 1.需要先确定Python的安装目录,打开终端查看pyt ...

  3. 自动化测试===unittest配套的HTMLTestRunner.py生成html报告源码

    更改版: 全部复制,命名为  HTMLTestRunner.py 文件 #使用方法参见之前的文档:自动化测试===unittest和requests接口测试案例,测试快递查询api(二) " ...

  4. Python3 Unittest+HTMLTestRunner.py文件

    1.目录结构 1.test.py 运行主文件 2.req.py 调用requests方法 3.HTMLTestRunner.py这个文件是生成报告的文件,从官网下载,我这里是现成,可能里面需要导入一些 ...

  5. python3.x中使用HTMLTestRunner.py

    python3.x中使用HTMLTestRunner.py   大神 tungwaiyip 编写HTMLTestRunner.py在python2.x中极大的方便了测试报告的输出. 当我们在pytho ...

  6. HTMLTestRunner.py内容

    HTMLTesstRunner.py 修改后内容如下: """ A TestRunner for use with the Python unit testing fra ...

  7. python3 +改进HTMLTestRunner.py 测试报告显示

              只要加上这个就可以显示注释信息了 转载于:https://www.cnblogs.com/wm1012/p/6650078.html

  8. python自动生成测试报告步骤_生成HTMLTestRunner测试报告的操作步骤——Python+selenium自动化...

    HTMLTestRunner是Python标准库的unittest模块的一个扩展,具体操作如下 1.安装 环境:Window8 步骤:1)http://tungwaiyip.info/software ...

  9. python htmltestrunner报告_Python HTMLTestRunner可视化报告实现过程解析

    操作步骤 1.下载HTMLTestRunner.py 2.把文件复制到python安装/lib位置下 3. 3.导入:import HTMLTestRunner import unittest 4.m ...

最新文章

  1. 你管这破玩意儿叫负载均衡?
  2. 跟我学PPStream局域网共享
  3. 反向代理服务器(Reverse Proxy)
  4. Linux基金会:Linux已经战胜微软
  5. 获取淘宝开发平台的sessionKey
  6. (49)Xilinx Subtracter IP核配置(十)(第10天)
  7. 华三服务器管理口地址_路由器LAN口接入其他运营商宽带导致上网不稳定案例分析...
  8. 《Spring 5 官方文档》5. 验证、数据绑定和类型转换(二)
  9. linux命令行效率,聊聊那些可以提高工作效率的Linux命令
  10. 计算机boot进入u盘启动,电脑boot设置U盘启动项具体方法
  11. 微信小程序实现倒计时
  12. MPU和MCU的区别
  13. 学习笔记 Tianmao 篇 RecyclerView.Adapter 的封装
  14. HTML中的span是什么意思
  15. JQuery获取父,子,兄弟节点
  16. 超简单的_ps抠图_在线抠图工具_智能抠图_速抠图
  17. 0324的学习笔记----里面最重要的就是一个tom猫的动画,和涉及到的内存问题(创建imageview的两种方式,imagenamed就会形成缓存,占用很多内
  18. 【Git配置技巧】01. 配置文件git config介绍
  19. PICASSO,一个高效的搜推广稀疏训练解决方案
  20. [读书笔记] 图解HTTP

热门文章

  1. iOS 相册权限绕过漏洞
  2. iOS Hacker 越狱后开发和逆向工具准备
  3. centos安装mysql 简书_在centos上安装mysql
  4. c __cplusplus详解
  5. C 语言 常见数据类型解析
  6. [Jarvis OJ - PWN]——[XMAN]level4
  7. [BUUCTF-pwn]——get_started_3dsctf_2016
  8. python读取有空行的csv_如何在使用python读取CSV文件时跳过空行
  9. TCP协议连接过程详解
  10. EXECUTE IMMEDIATE用法小解