python修改html的td_python3修改HTMLTestRunner,生成有截图的测试报告,并发送测试邮件(二)...
3. 如何将第一步得到的地址和名称 输入 进第二步里的表格中呢。。。
用上述查找元素的方法,发现HTMLTestRunner.py中REPORT_TEST_WITH_OUTPUT_TMPL是用来输出测试结果的。我们只需要将截图url和名称写进去即可。
假定我们目前已经可以定位到每个用例的具体截图,并将截图url定义为变量html,名称定义成变量name,修改HTMLTestRunner.py的代码如下:
REPORT_TEST_WITH_OUTPUT_TMPL = r"""
%(status)s
%(name)s
[x]
%(script)s
""" #variables: (tid, Class, style, desc, status)
找到变量定义的函数:_generate_report_test,修改如下:
row = tmpl %dict(
tid=tid,
Class= (n == 0 and 'hiddenRow' or 'none'),
style= n == 2 and 'errorCase' or (n == 1 and 'failCase' or 'none'),
desc=desc,
script=script,
html= html, #此处修改
name = name, #此处修改
status =self.STATUS[n],
)
rows.append(row)if nothas_output:return
定义变量、以url格式输出变量已经搞定。接下来是给变量赋值~~
思路:依照大神们些的博客,看出函数_generate_report_test中的ue和uo代表unittest中打印日志和抛出异常日志。想到如果我把截图的url和name打印到日志中,就能够从ue和uo中很容易的提取到url和name。
开始对unittest进行改造~~
思路:我想对每条用例都输出截图,不论fail或者pass。如果用例执行正确,则只打印日志。如果用例执行错误,则打印日志并抛出异常日志。
unittest是python3自带的库,我们需要找到unittest文件夹,对case.py修改。路径:XXX(自己的python安装路径)\Python\Python36\Lib\unittest
case.py的TestCase类中增加两个方法
def screenshot():
def add(func):
具体如下:
classTestCase(object):def screenshot(): #(一)中讲过定义截图的方法
imageName = str(time.time()) + '.png'imagepath= '//sdcard//' +imageName
path= os.getcwd() + '\\screenshot'
if notos.path.exists(path):
os.mkdir( path)
os.system("adb shell //system//bin//screencap -p" +imagepath)
os.system('adb pull' + imagepath +path)print('lustrat' + path + '\\' + imageName + 'luend') #输出日志,前后加'luStrat'luEnd'特殊字符方便截取
def add(func): #增加打印日志的方法
def wrapper(self, first, second, msg=None):try:
func(self, first, second, msg=None)
TestCase.screenshot()exceptAssertionError:
TestCase.screenshot()raise AssertionError(msg) #抛出AssertionError
return wrapper
然后在用到的assert方法前加@add装饰器。注意定义的func的传参与assert方法一致。如我用到了
@add #此处修改
def assertEqual(self, first, second, msg=None):"""Fail if the two objects are unequal as determined by the '=='
operator."""assertion_func=self._getAssertEqualityFunc(first, second)
assertion_func(first, second, msg=msg)
至此HTMLTestRunner.py的uo和ue输出的日志就包含了print的截图地址信息
最后一步了,取出ue和uo的关于截图的url和name,并赋值给变量html和name就搞定了~~~
def_generate_report_test(self, rows, cid, tid, n, t, o, e):#e.g. 'pt1.1', 'ft1.1', etc
has_output = bool(o ore)
tid= (n == 0 and 'p' or 'f') + 't%s.%s' % (cid+1,tid+1)
name= t.id().split('.')[-1]
doc= t.shortDescription() or ""desc= doc and ('%s: %s' % (name, doc)) orname
tmpl= has_output and self.REPORT_TEST_WITH_OUTPUT_TMPL orself.REPORT_TEST_NO_OUTPUT_TMPL#o and e should be byte string because they are collected from stdout and stderr?
ifisinstance(o,str):#TODO: some problem with 'string_escape': it escape \n and mess up formating
#uo = unicode(o.encode('string_escape'))
uo =eelse:
uo=oifisinstance(e,str):#TODO: some problem with 'string_escape': it escape \n and mess up formating
#ue = unicode(e.encode('string_escape'))
ue = o #此处修改
else:
ue=o
script= self.REPORT_TEST_OUTPUT_TMPL %dict(
id=tid,
output= saxutils.escape(str(uo)+str(ue)),
)
s= str(uo) +str(ue) #此处修改开始
if s.count('png')!=0: #判断日志中是否有图片
html = s[s.find('lustrat')+7:s.find('luend')]
name= html[html.find('shot\\')+5:]else:
html= ' 'name= ' ' #此处修改结束
row = tmpl %dict(
tid=tid,
Class= (n == 0 and 'hiddenRow' or 'none'),
style= n == 2 and 'errorCase' or (n == 1 and 'failCase' or 'none'),
desc=desc,
script=script,
html=html,
name=name,
status=self.STATUS[n],
)
rows.append(row)if nothas_output:return
百度云盘下载地址:unittest文件夹case.py修改链接:https://pan.baidu.com/s/1eTMJu86 密码:n19o
HTMLTestRunner.py链接:https://pan.baidu.com/s/1dGSRbg9 密码:lw0e
python修改html的td_python3修改HTMLTestRunner,生成有截图的测试报告,并发送测试邮件(二)...相关推荐
- python修改html的td_python3修改HTMLTestRunner,生成有截图的测试报告,并发送测试邮件(一)...
首先思路是酱紫的.想要在测试报告后面加一列截图信息.主要的任务 获得截图 拿到截图地址和名称 在HTMLTestRunner生成的表格中多加一列 在表格中将截图地址和名称输入进对应的测试用例里 最后将 ...
- python yolo-v2 设计批处理程序对训练生成的权重文件进行自动化批量测试,并输出结果到指定txt文件
项目背景 在yolo-v2生成D:\dahuangfeng\darknet-master\build\darknet\x64\backup路径下的权重文件 后,我们先需要先修改D:\dahuangfe ...
- python appium自动化测试框架unittest_Appium基于Python unittest自动化测试 自动化测试框架 -- PO并生成html测试报告...
基于python单元测试框架unittest完成appium自动化测试,生成基于html可视化测试报告 代码示例: #利用unittest并生成测试报告 class Appium_test(unitt ...
- html 形成打印数据,用HTMLTestRunner生成报告,无法打印print的内容
我想既可以生成HTMLTestRunner测试报告,又可以在命令窗口print出文字来知晓当前脚本运行到具体哪一步. 可是没使用HTMLTestRunner生成报告的时候可以在命令窗口内打印print ...
- Python打包文件到exe 修改图标 优化启动速度
Python打包文件到exe 修改图标 优化启动速度 为什么要把Python打包程序到exe Python打包程序到exe 安装打包工具pyinstaller 打包程序为exe 修改打包文件的名称 修 ...
- python修改html内容_详解Python利用Beautiful Soup模块修改内容示例代码
Beautiful Soup是一个可以从HTML或XML文件中提取数据的Python 库.它能够通过你喜欢的转换器实现惯用的文档导航.查找.修改文档的方式.他还能够修改HTML/XML文档的内容.这篇 ...
- python怎么修改默认路径_修改默认python
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 系统中默认安装了多个版本的python,其中默认使用的是python2.7,现在 ...
- python列表(list)+索引切片+修改+插入+删除+range函数生成整数列表对象
python列表(list)+索引切片+修改+插入+删除+range函数生成整数列表对象 列表(list)是什么? 列表是Python中内置有序.可变序列,列表的所有元素放在一对中括号"[] ...
- Python用HTMLTestRunner生成html测试报告
一.引入HTMLTestRunner包 1.下载HTMLTestRunner.py,已上传到网盘,点击下载 2.将HTMLTestRunner.py复制到python安装目录的Lib文件夹下. 可能有 ...
最新文章
- 在VS2013平台下如何快速解决c++代码内存泄漏问题
- 详解JVM内存管理与垃圾回收机制5 - Java中的4种引用类型
- 使用vmstat和iostat命令进行Linux性能监控
- 心灵探索——我为什么会在家工作
- exchange2003 SMTP连接器的应用案例
- 垂直居中之父元素高度确定的文本
- Java中反射的理解
- 查看xp计算机物理地址,Xp系统怎么更改物理地址?WinXp系统修改物理地址的方法...
- 浏览器标准模式和怪异模式之间的区别是什么——整理自网页
- 数据链路层——MAC地址欺骗及泛洪
- Vue2.0 的 Material Design UI 组件库 Muse-UI
- Notes Twelfth Day-渗透攻击-红队-命令与控制
- 猿创征文 | DevOps运维的10个日常使用工具分享
- 太牛逼了,Python和算法简直是绝配
- JVM知识整理----基础和垃圾处理
- 华为服务器1u系列,1u服务器
- 流水不腐,户枢不蠹。运动多些。
- Spring Boot集成支付宝(最新版SDK)—— 手机支付
- 京东css3动画全屏海报_CSS3动画演示,效果惊到爆
- 地图实现地点查找和导航
热门文章
- 【英语学习】【Level 07】U05 Best Destination L4 A perfect destination
- 【英语学习】【WOTD】shard 释义/词源/示例
- Intel 64/x86_64/IA-32/x86处理器 - 指令格式(10/E) - 特殊指令格式(AVX AVX-512)
- Unity Shader: 理解Stencil buffer并将它用于一些实战案例(描边,多边形填充,反射区域限定,阴影体shadow volume阴影渲染)
- linux下安装wls1036_generic.jar,weblogic 安装
- GITHUB来获得UE4源代码
- 理解setState(),异步还是同步?
- 中文分词——正向最大匹配法
- jquery报变量没定义错误的原因
- 微信快速开发框架(二) -- 快速开发微信公众平台框架---简介