(原文: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)(转)的更多相关文章

  1. Appium+python HTML测试报告(2)——一份报告模板(转)

    (原文:https://www.cnblogs.com/fancy0158/p/10055003.html) 适用于python3: 下载地址: 英文:https://pan.baidu.com/s/ ...

  2. (appium+python)UI自动化_09_unittest批量运行测试用例&生成测试报告

    前言 上篇文章[(appium+python)UI自动化_08_unittest编写测试用例]讲到如何使用unittets编写测试用例,并执行测试文件.接下来讲解下unittest如何批量执行测试文件 ...

  3. android模拟器(genymotion)+appium+python 框架执行基本原理(目前公司自己写的)

    android模拟器(genymotion)+appium+python 框架执行的基本过程: 1.Push.initDate(openid)方法     //业务数据初始化 1.1   v5db.p ...

  4. (appium+python)UI自动化_08_unittest编写测试用例

    前言 unittest是python自带的单元测试框架,类似于Junit(Java单元测试框架).支持自动化测试,可编写测试前置&后置条件,并且可批量运行测试用例并生成测试报告. 使用unit ...

  5. Appium python API 总结

    Appium python api 根据testerhome的文章,再补充一些文章里面没有提及的API [TOC] [1]find element driver 的方法 注意:这几个方法只能通过sel ...

  6. appium+Python真机运行测试demo的方法

    appium+Python真机运行测试demo的方法 一,    打开手机的USB调试模式 二,    连接手机到电脑 将手机用数据线连接到电脑,并授权USB调试模式.查看连接的效果,在cmd下运行命 ...

  7. python webdriver测试报告

    python webdriver测试报告 即将开始一系列的自动化项目实践,很多公共类和属性都需要提前搞定.今天,解决了测试报告的一些难题,参照了很多博文,最终觉得HTMLTestRunner非常不错, ...

  8. appium+python做移动端自动化测试

      1 导言 1.1 编制目的 该文档为选用Appium作为移动设备原生(Native).混合(Hybrid).移动Web(Mobile Web)应用UI自动化测试的相关自动化测试人员.开发人员等提供 ...

  9. appium python ios 自动化

    mac下搭建appium python selenium来针对ios应用进行自动化测试,并不是官网上的例子,自己程序调试成功. 前言:因为appium的安装前要先确定nodejs的安装.python的 ...

随机推荐

  1. PAT——1020. 月饼

    月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意:销售时允许取出一部分库存.样 ...

  2. sharepoint OOS打开文档使用新窗口

    总体说来就是在<a>标签上嵌入_blank $("a[onclick*='return DispEx'][target!='_blank']") .attr(" ...

  3. oracle的sys和system的默认密码

    oracle的sys和system默认密码system默认:manager sys默认:change_on_install使用PL/SQL Plus登录数据库时,system用户使用密码manager ...

  4. js获取今天,明天,本周五,下周五日期的函数

    代码比较简单,随便写写 /** * a连接快速选择日期函数 */ function timeChooseSimple(key, me) { //today,tomorrow,thisWeek,next ...

  5. JBDC—③数据库连接池的介绍、使用和配置

    首先要知道数据库连接(Connection对象)的创建和关闭是非常浪费系统资源的,如果是使用常规的数据库连接方式来操作数据库,当用户变多时,每次访问数据库都要创建大量的Connnection对象,使用 ...

  6. angular入门一之环境安装及项目创建

    angular入门一之环境安装及项目创建 1.安装node.js 下载,安装,在终端测试安装是否成功:node -v(查看nodejs版本) npm -v(查看npm版本) 下载地址:https:// ...

  7. 正方形(类型:枚举、一级、C++)

    题目描述 有一个正方形,四个角的坐标分别是(1,-1),(1,1),(-1,-1),(-1,1).写一个程序,判断一个给定的点(x,y)是否在这个正方形内(包括正方形边界),如果在正方形内输出“Yes ...

  8. Linux各个文件及其含义

    树状目录结构: 以下是对这些目录的解释: /bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令. /boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像 ...

  9. jQuery 实现下载进度条

    //ajax异步上传 $.ajax({ url: "${pageContext.request.contextPath }/upload", type: "POST&qu ...

  10. Node.js http.createServer 简单服务配置

    基本实现: var http = require("http"); var server = http.createServer(function (req, res) { if ...