详解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 相关文章推荐
浅谈django model postgres的json字段编码问题
Jan 05 Python
Python实现GUI学生信息管理系统
Apr 05 Python
python实现年会抽奖程序
Jan 22 Python
python贪吃蛇游戏代码
Apr 18 Python
django做form表单的数据验证过程详解
Jul 26 Python
python读写Excel表格的实例代码(简单实用)
Dec 19 Python
Python如何使用内置库matplotlib绘制折线图
Feb 24 Python
Python 批量读取文件中指定字符的实现
Mar 06 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
Mar 16 Python
Python return语句如何实现结果返回调用
Oct 15 Python
Python接口自动化测试框架运行原理及流程
Nov 30 Python
Matlab如何实现矩阵复制扩充
Jun 02 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
laravel 解决强制跳转 https的问题
2019/10/22 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
类似GMAIL的Ajax信息反馈显示
2010/02/16 Javascript
JavaScript调用客户端Java程序的方法
2015/07/27 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
jquery基础知识第一讲之认识jquery
2016/03/17 Javascript
Bootstrap每天必学之按钮(Button)插件
2016/04/25 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
JS实现的简单轮播图运动效果示例
2016/12/22 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
2017/07/23 Javascript
nodejs对express中next函数的一些理解
2017/09/08 NodeJs
p5.js实现斐波那契螺旋的示例代码
2018/03/22 Javascript
vue实现动态添加数据滚动条自动滚动到底部的示例代码
2018/07/06 Javascript
vscode 开发Vue项目的方法步骤
2018/11/25 Javascript
layui实现下拉复选功能的例子(包括数据的回显与上传)
2019/09/24 Javascript
python从sqlite读取并显示数据的方法
2015/05/08 Python
Python生成数字图片代码分享
2017/10/31 Python
对Pandas MultiIndex(多重索引)详解
2018/11/16 Python
Python提取支付宝和微信支付二维码的示例代码
2019/02/15 Python
python3 实现函数写文件路径的正确方法
2019/11/27 Python
Softmax函数原理及Python实现过程解析
2020/05/22 Python
OpenCV 使用imread()函数读取图片的六种正确姿势
2020/07/09 Python
中专生的个人自我评价
2013/12/11 职场文书
技术总监管理职责范本
2014/03/06 职场文书
2014年端午节活动方案
2014/03/11 职场文书
售后服务承诺书范文
2014/03/26 职场文书
离婚协议书格式
2014/11/21 职场文书
一年级数学下册复习计划
2015/01/17 职场文书
介绍信的格式
2015/01/30 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
童年读书笔记
2015/06/26 职场文书
护士旷工检讨书
2015/08/15 职场文书
2016党风廉政建设心得体会范文
2016/01/25 职场文书
python字符串的多行输出的实例详解
2021/06/08 Python
Ruby处理YAML和json数据
2022/04/18 Ruby
微信小程序APP页面的之间的相互传递参数以及自定义组件
2022/04/19 Javascript