详解Appium+Python之生成html测试报告


Posted in Python onJanuary 04, 2019

思考:测试用例执行后,如何生成一个直观漂亮的测试报告呢?

分析:

1.unittest单元测试框架本身带有一个textTestRunner类,可以生成txt文本格式的测试报告,但是页面不够直观

2.我们可以导入第三方库,比如常用的HTMLTestRunner类,可以生成html格式测试报告

3.首先去下载HTMLTestRunner_PY3.py脚本(我这里采用Python3.7),然后放置在Python3.7路径下的Lib目录下,使用时需要导入(即import HTMLTestRunner_PY3)

代码示例如下:

if __name__ == "__main__":
  #实例化测试套件
   suite = unittest.TestSuite()
   #加载测试用例
   suite.addTest(TestCase("test_login"))
  #生成测试报告
  # 选择指定时间格式
  timestr = time.strftime('%Y-%m-%d%H%M%S', time.localtime(time.time()))
  # 定义测试报告存放路径和报告名称
  Report = os.path.join(
    PATH('E://testing_code/code/SmartSiteTestScript/report/test_report_') +
    timestr +
    '.html')
  with open(Report, 'wb') as f:
    runner = HTMLTestRunner_PY3.HTMLTestRunner(stream=f, 
                         verbosity=2,
                         title='XXXX自动化测试报告',
                         description='执行人:丹姐') 
  runner.run(suite) 

  # 关闭测试报告 
  f.close()

解析:

1.在测试报告名中显示时间:(引入time包) timestr=time.strftime("%Y-%m-%d-%H_%M_%S",time.localtime(time.time()))

time.time():获取当前时间戳

time.ctime():获取当前时间的字符串

time.localtime():当前时间的struct_time形式

time.strftime("%Y-%m-%d-%H_%M_%S",time.localtime()):获取特定格式的时间,通常用这个

2.TestSuite是个容器,往里面用addTest()添加测试用例

3.Report定义报告保存的路径以及文件名

open() 函数用于打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写

语法:open(name[, mode[, buffering]])

  • name : 一个包含了你要访问的文件名称的字符串值
  • mode : mode 决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)
  • buffering : 如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认

详解Appium+Python之生成html测试报告

这里常用的为 open(Report,'wb'):以二进制形式打开文件Report

4.runner定义测试报告格式,stream定义报告写入的二进制文件,title为报告的标题,description为报告的说明,runner.run()用来运行测试case,注意最后用f.close()将文件关闭!

verbosity表示测试结果的信息复杂度,有三个值

  • 0 (静默模式): 你只能获得总的测试用例数和总的结果 比如 总共100个 失败20 成功80
  • 1 (默认模式): 非常类似静默模式 只是在每个成功的用例前面有个“.” 每个失败的用例前面有个 “F”
  • 2 (详细模式):测试结果会显示每个测试用例的所有相关的信息

测试报告效果图如下所示:

详解Appium+Python之生成html测试报告

Python 相关文章推荐
Python程序员开发中常犯的10个错误
Jul 07 Python
python获取指定网页上所有超链接的方法
Apr 04 Python
在Python下利用OpenCV来旋转图像的教程
Apr 16 Python
简介Python中用于处理字符串的center()方法
May 18 Python
最大K个数问题的Python版解法总结
Jun 16 Python
python 获取文件下所有文件或目录os.walk()的实例
Apr 23 Python
python使用openpyxl库修改excel表格数据方法
May 03 Python
关于python2 csv写入空白行的问题
Jun 22 Python
python中实现控制小数点位数的方法
Jan 24 Python
详解Django模版中加载静态文件配置方法
Jul 21 Python
详解Python实现进度条的4种方式
Jan 15 Python
通过Turtle库在Python中绘制一个鼠年福鼠
Feb 03 Python
python虚拟环境迁移方法
Jan 03 #Python
对django xadmin自定义菜单的实例详解
Jan 03 #Python
在Python中关于使用os模块遍历目录的实现方法
Jan 03 #Python
Python代码打开本地.mp4格式文件的方法
Jan 03 #Python
python paramiko利用sftp上传目录到远程的实例
Jan 03 #Python
python scp 批量同步文件的实现方法
Jan 03 #Python
python Pexpect 实现输密码 scp 拷贝的方法
Jan 03 #Python
You might like
PHP中实现图片的锐化
2006/10/09 PHP
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
2007/03/15 PHP
php 不使用js实现页面跳转
2014/02/11 PHP
destoon复制新模块的方法
2014/06/21 PHP
PHP实现简单计算器小程序
2020/08/28 PHP
详解new function(){}和function(){}() 区别分析
2008/03/22 Javascript
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
jquery load()在firefox(火狐)下显示不正常的解决方法
2011/04/05 Javascript
常见JS效果之图片减速度滚动实现代码
2011/12/08 Javascript
jquery 无限级联菜单案例分享
2013/03/26 Javascript
JQuery实现绚丽的横向下拉菜单
2013/12/19 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
vue自定义指令实现v-tap插件
2016/11/03 Javascript
js实现二级导航功能
2017/03/03 Javascript
浅谈Angular4实现热加载开发旅程
2017/09/08 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
2018/08/18 Javascript
vue elementui el-form rules动态验证的实例代码详解
2019/05/23 Javascript
js实现上传图片并显示图片名称
2019/12/18 Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
2020/04/09 Javascript
es6函数之rest参数用法实例分析
2020/04/18 Javascript
python实现批量转换文件编码(批转换编码示例)
2014/01/23 Python
利用Python进行异常值分析实例代码
2017/12/07 Python
python3监控CentOS磁盘空间脚本
2018/06/21 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
2019/05/10 Python
如何利用Pyecharts可视化微信好友
2019/07/04 Python
在pycharm中为项目导入anacodna环境的操作方法
2020/02/12 Python
python热力图实现简单方法
2021/01/29 Python
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
工厂门卫岗位职责范本
2014/04/04 职场文书
代理协议书范本
2014/04/22 职场文书
三严三实对照检查材料范文
2014/09/23 职场文书
房屋租赁合同解除协议书
2014/10/11 职场文书
稽核岗位职责范本
2015/04/13 职场文书
不会写演讲稿,快来看看这篇文章!
2019/08/06 职场文书
Python中request的基本使用解决乱码问题
2022/04/12 Python
Mybatis 一级缓存和二级缓存原理区别
2022/09/23 Java/Android