Appium+python HTML测试报告(1)(转)
(原文:https://www.cnblogs.com/fancy0158/p/10054632.html)
测试任务执行完成后,我们需要一份通俗易懂的测试报告来展示自动化测试的结果。
HTMLTestRunner是Python的单元测试框架unittest的一个扩展,它生成易于使用的HTML测试报告。与TextTestRunner一样提供run()方法来执行测试套件或测试用例,返回特定的值表示执行结果。
一、HTMLTestRunner配置
1、HTMLTestRunner.py的下载
下载地址:
python2:http://tungwaiyip.info/software/HTMLTestRunner.html
右键另存为下载HTMLTestRunner.py,将文件放到...\python\Lib目录下
python3:https://pan.baidu.com/s/1k4m6JFelcWH_QiHGlvjsUQ
HTMLTestRunner是基于Python2开发的,要支持python3,需要修改HTMLTestRunner.py文件中的部分内容。上面下载链接为已修改文件,将文件放到...\python\Lib目录下。
在python交互模式下导入HTMLTestRunner模块,系统没有报错则说明添加成功。
>>> import HTMLTestRunner
>>>
2、生成HTML测试报告
# coding:utf-8
import unittest, time
from appium import webdriver
from HTMLTestRunner import HTMLTestRunner
if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(TestCalculator('test_add'))
# 执行测试,使用HTMLTestRunner生成测试报告
fp = open('./result.html', 'wb')
runner = HTMLTestRunner(stream=fp, title='计算器测试报告', description='测试用例执行情况')
runner.run(suite)
fp.close()
- open(),自动创建并打开以二进制模式打开指定目录下的result.html文件
- 初始化一个HTMLTestRunner对象runner,stream制定测试报告文件,title定义测试报告的标题,description定义测试报告的副标题
- HTMLTestRunner的run()方法运行测试套件
- fp.close()关闭测试报告文件
测试执行完成后,打开目录中生成的result.html文件查看测试报告

二、优化测试报告
1、测试报告文件命名优化
上面将测试报告文件命名为result.html,每次生成报告时会将之前的报告覆盖掉。我们在测试运行前将原来的测试报告修改名字以保存,但是这样将花费时间且可能会忘记。我们将测试报告文件名加上当前时间,使生成的报告更不会重叠,更清晰。
Python中的time模块提供了丰富的关于时间的操作
>>> import time
>>> time.time()
1543739732.9201088
>>> time.ctime()
'Sun Dec 2 16:35:39 2018'
>>> time.localtime()
time.struct_time(tm_year=2018, tm_mon=12, tm_mday=2, tm_hour=16, tm_min=35, tm_sec=48, tm_wday=6, tm_yday=336, tm_isdst=0)
>>> time.strftime("%Y-%m-%d %H:%M:%S")
'2018-12-02 16:36:57'
>>>
代码修改如下:
if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(TestCalculator('test_add'))
suite.addTest(TestCalculator('test_sub'))
# 执行测试,使用HTMLTestRunner生成测试报告
now_time = time.strftime("%Y%m%d_%H-%M-%S")
file_path = open('./'+now_time+'_TestResult.html', 'wb')
runner = HTMLTestRunner(
stream=file_path, # 文件
title='计算器测试报告', # 标题
description='测试用例执行情况', # 副标题
)
runner.run(suite)
file_path.close()
运行后生成的报告文件为:

2、测试报告优化
python的注释有两种,一种是comment,一种是doc string。comment是普通的注释,doc string用于函数、类和方法的描述。
在类和方法下方添加""" """或''' '''来添加doc string类型的注释。HTMLTestRunner可以读取doc string类型的注释
class TestCalculator(unittest.TestCase):
"""计算器应用case""" def test_add(self):
''' 加运算 '''
运算后报告如下:

Appium+python HTML测试报告(1)(转)的更多相关文章
- Appium+python HTML测试报告(2)——一份报告模板(转)
(原文:https://www.cnblogs.com/fancy0158/p/10055003.html) 适用于python3: 下载地址: 英文:https://pan.baidu.com/s/ ...
- (appium+python)UI自动化_09_unittest批量运行测试用例&生成测试报告
前言 上篇文章[(appium+python)UI自动化_08_unittest编写测试用例]讲到如何使用unittets编写测试用例,并执行测试文件.接下来讲解下unittest如何批量执行测试文件 ...
- android模拟器(genymotion)+appium+python 框架执行基本原理(目前公司自己写的)
android模拟器(genymotion)+appium+python 框架执行的基本过程: 1.Push.initDate(openid)方法 //业务数据初始化 1.1 v5db.p ...
- (appium+python)UI自动化_08_unittest编写测试用例
前言 unittest是python自带的单元测试框架,类似于Junit(Java单元测试框架).支持自动化测试,可编写测试前置&后置条件,并且可批量运行测试用例并生成测试报告. 使用unit ...
- Appium python API 总结
Appium python api 根据testerhome的文章,再补充一些文章里面没有提及的API [TOC] [1]find element driver 的方法 注意:这几个方法只能通过sel ...
- appium+Python真机运行测试demo的方法
appium+Python真机运行测试demo的方法 一, 打开手机的USB调试模式 二, 连接手机到电脑 将手机用数据线连接到电脑,并授权USB调试模式.查看连接的效果,在cmd下运行命 ...
- python webdriver测试报告
python webdriver测试报告 即将开始一系列的自动化项目实践,很多公共类和属性都需要提前搞定.今天,解决了测试报告的一些难题,参照了很多博文,最终觉得HTMLTestRunner非常不错, ...
- appium+python做移动端自动化测试
1 导言 1.1 编制目的 该文档为选用Appium作为移动设备原生(Native).混合(Hybrid).移动Web(Mobile Web)应用UI自动化测试的相关自动化测试人员.开发人员等提供 ...
- appium python ios 自动化
mac下搭建appium python selenium来针对ios应用进行自动化测试,并不是官网上的例子,自己程序调试成功. 前言:因为appium的安装前要先确定nodejs的安装.python的 ...
随机推荐
- SpringBoot 默认日志
默认使用的这个类 org.apache.commons.logging.Log import org.apache.commons.logging.Log; import org.apache.com ...
- [SCOI2005]互不侵犯(状压DP)
嗝~算是状压DP的经典题了~ #\(\mathcal{\color{red}{Description}}\) 在\(N×N\)的棋盘里面放\(K\)个国王,使他们互不攻击,共有多少种摆放方案.国王能攻 ...
- C/S模式,发布/订阅模式和PUSH/PULL模式(上)
CS模式(客户端/服务器模式) 最场景的信息传递模式,也称为Request/Response模式,或者调用模式.http/https协议即此模式.因为最常用所以大家一般都比较熟悉,这里不重点讲了,大家 ...
- 安装Oracle 18.4 RAC 遇到ORA-40238报错
场景: Aix 7.2 上安装Oracle 18.4 RAC 执行root.sh脚本,ASM failed to start !查看日志文件:ORA-40238: invalid linear alg ...
- C#多个if与if+多个else if有何不同?
int a=1; if(a==1){System.out.println("1");} if(a==2){System.out.println("2");} i ...
- iOS之Custom UIViewController Transition
本文学习下自定义ViewController的切换,从无交互的到交互式切换. (本文已同步到我的小站:icocoa,欢迎访问.) iOS7中定义了3个协议: UIViewControllerTrans ...
- UITextView 光标定位
在使用UITextView的时候, 如何在光标的位置插入字符 或者 图片? 以下Demo为你解答: 应用背景:键盘自定义emoji表情 #pragma mark - KVO - (void)obser ...
- Contract Helper
using System; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; using Microsoft.Xrm.Sdk.Que ...
- python3+pyzbar+Image 进行图片二维码识别
1.前言 最近公司有个项目要写个程序自动识别客户提交照片里的二维码,一接到这个任务马上就想到了用Python这个万能的工具! 2.搜寻 首先在网上到处找了很多“灵感”,看看其他人都会用什么包来完成这个 ...
- Django模型定义参考
字段 对字段名称的限制 字段名不能是Python的保留字,否则会导致语法错误 字段名不能有多个连续下划线,否则影响ORM查询操作 Django模型字段类 字段类 说明 AutoField 自增ID字段 ...