如何生成HTMLTestRunner报告
今天,学习了如何生成HTMLTestRunner测试报告。
接上篇文章,对于unittest框架,运行后,测试结果不便于查看,同时多个case存在的时候,可能会导致case result记录不正确的情况。
为此,引入了HTMLTestRunner.py,它是Python标准库unittest模块的一个扩展。它可以生成直观的HTML测试报告。
首先,下载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 notcls 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。
测试脚本:
#coding=utf-8 #防止中文乱码
from selenium import webdriver
from selenium.webdriver.common.by import By
#加载键盘使用的模块
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
#加载unittest模块
import unittest
import time
import re
#加载HTMLTestRunner,用于生成HTMLreuslt
import HTMLTestRunner
class BaiduYun(unittest.TestCase):
def setUp(self):
self.browser=webdriver.Chrome()
self.browser.implicitly_wait(30)
self.base_url="http://yun.baidu.com"
self.verficationErrors=[]
self.accept_next_alert=True
def Login(self):
browser=self.browser
browser.get(self.base_url+'/')
u"""百度云登录"""
browser.find_element_by_name("userName").clear()
username=browser.find_element_by_name("userName")
username.send_keys("alu***")
username.send_keys(Keys.TAB)
time.sleep(2)
password=browser.find_element_by_name("password")
password.send_keys("***")
password.send_keys(Keys.ENTER)
time.sleep(3)
browser.close()
def Register(self):
browser=self.browser
browser.get(self.base_url+'/')
u"""立即注册百度账号"""
browser.find_element_by_class_name("link-create").click()
time.sleep(2)
browser.close()
def Link(self):
browser=self.browser
browser.get(self.base_url+'/')
u"""会员中心"""
browser.find_element_by_link_text("会员中心").click()
time.sleep(2)
browser.close()
def tearDown(self):
self.browser.quit()
self.assertEqual([],self.verficationErrors)
if __name__=="__main__":
#unittest.main()
testunit=unittest.TestSuite()
#将测试用例加入到测试容器中
testunit.addTest(BaiduYun("Login"))
testunit.addTest(BaiduYun("Register"))
testunit.addTest(BaiduYun("Link"))
#获取当前时间,这样便于下面的使用。
now = time.strftime("%Y-%m-%M-%H_%M_%S",time.localtime(time.time()))
#打开一个文件,将result写入此file中
fp=open("result"+now+".html",'wb')
runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title='test result',description=u'result:')
runner.run(testunit)
fp.close()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
F5,运行,就这样得到了test result
在Python3.4中,可以得到:
在C:\Python34\目录下,有文件
打开后,如图所示:
这样看更直观。
同时,如果出现错误的case,也就只会显示fail的case(另外的test case的结果),对于pass的case,依旧显示pass,如图所示:
分析:
1.对于fp=file(filename,”wb”)在Python3.x中file已经不再使用了,需要使用的是fp=open(filename,”wb”)
同时一定要记得close fp即fp.close()
2.为了设置result file的name更直观,需要获取当前时间,已做分辨。
now=time.strftime(“%Y-%m-%M-%H_%M_%S”,time.localtime(time.time()))
那么,问题来了,虽然,生成的result倒是直观了,但是对于一个脚本里有多个case,这样对于脚本的维护以及使用,依旧不方便,这就需要考虑到整合case脚本,就需要学习测试套件。
如何生成HTMLTestRunner报告的更多相关文章
- 【python-HTMLTestRunner】生成HTMLTestRunner报告报错ERROR 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)
[python-HTMLTestRunner]生成HTMLTestRunner报告报错:ERROR 'ascii' codec can't decode byte 0xe5 in position 0 ...
- 用PyCharm执行测试成功但无法生成HTMLTestRunner报告
问题:代码写的没问题,执行也成功了,但就是无法生成HTMLTestRunner的报告 其实这是编辑器搞得鬼,编辑器为了方便用户执行测试,都有一项功能,可以用编辑器来调用unittest或者nose来执 ...
- Python不生成HTMLTestRunner报告-转载学习
1.问题:Python中同一个.py文件中同时用unittest框架和HtmlReport框架后,HtmlReport不被执行. 2.为什么?其实不是HtmlReport不被执行,也不是HtmlRep ...
- unittest 运行slenium(五)---运行代码并生成HTMLTestRunner报告
整体代码如下: import os import sys import time import datetime import unittest import HTMLTestRunner # git ...
- 解惑unittest框架中导入HTMLTestRunner模块后正常运行却无法生成HTML报告问题
1.HTMLTestRunner介绍 HTMLTestRunner是一个第三方的unittest HTML报告库,用于python单元测试框架的TestRunner.它是生成一个HTML报告,以一目了 ...
- unittest同时支持参数化和生成html报告
最近在用python3.6+unittest+requests做自动化接口测试.发现一个问题,unittest中使用第3方插件parameterized进行参数化,再生成html报告时,运行就会失败. ...
- python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告
1.环境准备: python3.6 requests xlrd openpyxl HTMLTestRunner_api 2.目前实现的功能: 封装requests请求方法 在excel填写接口请求参数 ...
- python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(二)
可以参考 python+requests接口自动化完整项目设计源码(一)https://www.cnblogs.com/111testing/p/9612671.html 原文地址https://ww ...
- Python 同一文件中,有unittest不执行“if __name__ == '__main__”,不生成HTMLTestRunner测试报告的解决方案
1.问题:Python中同一个.py文件中同时用unittest框架和HtmlReport框架后,HtmlReport不被执行. 2.为什么?其实不是HtmlReport不被执行,也不是HtmlRep ...
随机推荐
- 我的WafBypass之道
0x00 前言 去年到现在就一直有人希望我出一篇关于waf绕过的文章,我觉得这种老生常谈的话题也没什么可写的.很多人一遇到waf就发懵,不知如何是好,能搜到的各种姿势也是然并卵.但是积累姿势的过程也 ...
- (转载)ORA-14452:试图创建,更改或删除正在使用的临时表中的索引
因为表kol_xx_fin050_temp 为临时表,而且有其他session正在使用. 处理步骤: 1.先从 dba_objects / user_objects中查询到该表的object_id: ...
- Java核心技术点之集合框架
1. 概述 Java集合框架由Java类库的一系列接口.抽象类以及具体实现类组成.我们这里所说的集合就是把一组对象组织到一起,然后再根据不同的需求操纵这些数据.集合类型就是容纳这些对象的一个容 ...
- (原创)mybatis学习二,spring和mybatis的融合
mybatis学习一夯实基础 上文介绍了mybatis的相关知识,这一节主要来介绍mybaits和spring的融合 一,环境搭建 1,jar包下载,下载路径为jar包 2,将包导入到java工程中 ...
- php常用函数(不定时更新)
一,数据操作类 1,天花板函数(ceil)和地板函数(floor) 这两个函数是对数据进行向上取整和向下取整的操作的,比如说 echo ceil("3.01"); //这里输出的是 ...
- python执行linux shell管道输出内容
干净不留痕,用过都说好. echo "print 1+1" |python
- P3381 【模板】最小费用最大流
P3381 [模板]最小费用最大流 题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 输入输出格式 输入格式: 第一行 ...
- Linux 网络编程详解九
TCP/IP协议中SIGPIPE信号产生原因 .假设客户端socket套接字close(),会给服务器发送字节段FIN: .服务器接收到FIN,但是没有调用close(),因为socket有缓存区,所 ...
- 关于onbeforeunload的一些想法
页面在关闭前会有onbeforeUnload事件,来询问用户是否要关闭这个页面OR选项卡 浏览器的F5刷新为按下F5----onbeforeUnload----onunload----onload; ...
- 发布我的图片预加载控件YPreLoadImg v1.0
介绍 大家好!很高兴向大家介绍我的图片预加载控件YPreLoadImg.它可以帮助您预加载图片,并且能显示加载的进度,在预加载完成后调用指定的方法. YPreLoadImg控件由一个名为PreLoad ...