详解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解析XML的几种方式
Feb 16 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
Jun 21 Python
pandas使用get_dummies进行one-hot编码的方法
Jul 10 Python
利用Django提供的ModelForm增删改数据的方法
Jan 06 Python
Django url,从一个页面调到另个页面的方法
Aug 21 Python
使用python实现画AR模型时序图
Nov 20 Python
使用 Python 写一个简易的抽奖程序
Dec 08 Python
如何利用pygame实现简单的五子棋游戏
Dec 29 Python
python使用正则表达式(Regular Expression)方法超详细
Dec 30 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
Apr 07 Python
python定义具名元组实例操作
Feb 28 Python
Python下opencv库的安装过程及问题汇总
Jun 11 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 面向对象的一个例子
2011/04/12 PHP
php封装的smarty类完整实例
2016/10/19 PHP
ThinkPHP 3.2.2实现事务操作的方法
2017/05/05 PHP
PHP编程中的Session阻塞问题与解决方法分析
2017/08/07 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
2006/12/27 Javascript
JS Excel读取和写入操作(模板操作)实现代码
2010/04/11 Javascript
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
jQuery中innerHeight()方法用法实例
2015/01/19 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
JavaScript数据类型判定的总结笔记
2015/07/31 Javascript
详解JavaScript的闭包、IIFE、apply、函数与对象
2016/12/21 Javascript
激动人心的 Angular HttpClient的源码解析
2017/07/10 Javascript
extjs简介_动力节点Java学院整理
2017/07/17 Javascript
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
JavaScript实现密码强度实时验证
2020/03/18 Javascript
[04:17]DOTA2完美盛典,rOtk、BurNIng携手巴图演唱《倔强》
2017/11/28 DOTA
一键搞定python连接mysql驱动有关问题(windows版本)
2016/04/23 Python
Python的面向对象编程方式学习笔记
2016/07/12 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
python面向对象实现名片管理系统文件版
2019/04/26 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
2020/02/27 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
Html5 APP中监听返回事件处理的方法示例
2018/03/15 HTML / CSS
2019年Java 最常见的 面试题
2016/10/19 面试题
新品发布会主持词
2014/04/02 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
物流管理专业自荐信
2014/06/23 职场文书
酒店管理失职检讨书
2014/09/16 职场文书
个人四风问题原因分析及整改措施
2014/09/28 职场文书
辛德勒的名单观后感
2015/06/03 职场文书
Oracle 区块链表创建过程详解
2021/05/15 Oracle
MySQL 十大常用字符串函数详解
2021/06/30 MySQL
python代码实现备忘录案例讲解
2021/07/26 Python
Ajax实现三级联动效果
2021/10/05 Javascript