详解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之数据类型总结
Sep 24 Python
Python入门篇之对象类型
Oct 17 Python
Python 中pandas.read_excel详细介绍
Jun 23 Python
Python温度转换实例分析
Jan 17 Python
Python多线程扫描端口代码示例
Feb 09 Python
python3实现SMTP发送邮件详细教程
Jun 19 Python
python频繁写入文件时提速的方法
Jun 26 Python
python pillow模块使用方法详解
Aug 30 Python
python树的同构学习笔记
Sep 14 Python
python实现查找所有程序的安装信息
Feb 18 Python
python2 对excel表格操作完整示例
Feb 23 Python
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
Apr 14 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
用Socket发送电子邮件
2006/10/09 PHP
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
PHP中set error handler函数用法小结
2015/11/11 PHP
CodeIgniter配置之autoload.php自动加载用法分析
2016/01/20 PHP
超酷的网页音乐播放器DewPlayer使用方法
2010/12/18 Javascript
使用jQuery清空file文件域的解决方案
2013/04/12 Javascript
使用jQuery插件创建常规模态窗口登陆效果
2013/08/23 Javascript
javascript最基本的函数汇总
2015/06/25 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
JS设置手机验证码60s等待实现代码
2017/06/14 Javascript
JS传播事件、取消事件默认行为、阻止事件传播详解
2017/08/14 Javascript
[js高手之路]寄生组合式继承的优势详解
2017/08/28 Javascript
js实现1,2,3,5数字按照概率生成
2017/09/12 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
2017/09/30 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
2017/12/01 Javascript
详解Vue2.0组件的继承与扩展
2018/11/23 Javascript
Vue核心概念Action的总结
2019/01/18 Javascript
JS匿名函数内部this指向问题详析
2019/05/10 Javascript
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 Javascript
layui prompt 设置允许空白提交的方法
2019/09/24 Javascript
react国际化化插件react-i18n-auto使用详解
2020/03/31 Javascript
Python的iOS自动化打包实例代码
2018/11/22 Python
python实现给scatter设置颜色渐变条colorbar的方法
2018/12/13 Python
python图形用户接口实例详解
2019/12/16 Python
Python requests获取网页常用方法解析
2020/02/20 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
Python如何将装饰器定义为类
2020/07/30 Python
CSS3中:nth-child和:nth-of-type的区别深入理解
2014/03/10 HTML / CSS
网站域名和主机:Domain.com
2019/04/01 全球购物
Stutterheim瑞典:瑞典高级外套时装品牌
2019/06/24 全球购物
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
高中军训第一天感言
2014/03/06 职场文书
2014年学校教学工作总结
2014/12/06 职场文书
小学班主任自我评价
2015/03/11 职场文书
Python Matplotlib库实现画局部图
2021/11/17 Python
DE1107机评
2022/04/05 无线电