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的 ...
随机推荐
- Delphi XE10在 Android下调用静态库a文件
Delphi Seatle can link Delphi project with Static library files(*.a): 1.at Delphi IDE, Add the " ...
- JDBC——释放资源的代码
public static void release(ResultSet rs, Statement statement, Connection conn) { if (rs != null) { t ...
- Oracle 自定义实用函数
一.ctod 字符转为date, create or replace function ctod(str in varchar2) return date as begin return to_dat ...
- Java单例模式几种实现方式
在平时的工作.学员的学习以及面试过程中,单例模式作为一种常用的设计模式,会经常被面试官问到,甚至笔试会要求学员现场默写,下面将会就单例模式的实现思路和几种常见的实现方式进行简单的分享. 单例模式,是一 ...
- vue+element 点击按钮后 导致 刷新页面 致url中拼接 ? 或者拼接参数
https://blog.csdn.net/sinat_37255207/article/details/88917162 element 自己的<el-form></el-form ...
- Java实例 Part3:流程控制
目录 Example01:判断某一年是否为闰年 Example02:验证登录信息的合法性 Example03:判断用户输入月份的季节 Example04:使用while循环语句与自增运算符循环遍历数组 ...
- rails + MySQL 存储emoji表情 😯
database.yml 加入 charset: utf8mb4 encoding: utf8mb4 collation: utf8mb4_unicode_ci 创建migration ,更改要存放表 ...
- 笔记(assert 断言)
并发:在同一个时间段交替执行多个任务并行:在同一个时间点同时执行多个任务串行:同时执行的多个任务按顺序执行(换句话说就是一个任务执行完后才能执行下一个任务) #mysql limit用法: selec ...
- go_json解析
总结: 其他类型转json func Marshal(v interface{}) ([]byte, error) json 转其他类型 func Unmarshal(data []byte, v ...
- Linux入门进阶第四天——服务管理
以下均基于CentOS6.3,其中有部分命令已经过时,在CentOS7中不再使用,请注意 [更新]:CentOS7改变: CentOS .0中一个最主要的改变,就是切换到了systemd.它用于替代红 ...