自动化测试基础篇--Selenium unittest生成测试报告(HTMLTestRunner)
如何生成HTMLTestRunner测试报告。接上篇文章,对于unittest框架,运行后,测试结果不便于查看,同时多个case存在的时候,可能会导致case result记录不正确的情况。
为此,引入了HTMLTestRunner.py,它是Python标准库unittest模块的一个扩展。它可以生成直观的HTML测试报告。
一、下载HTMLTestRuner
首先,下载HTMLTestRuner.py文件。
下载地址:Python2.7版本:http://tungwaiyip.info/software/HTMLTestRunner.html,
Python3.0版本:https://github.com/huilansame/HTMLTestRunner_PY3。
二、生成HTMLTestRuner报告
三、测试报告详情
四、参考代码
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- # @Author : chen
- # @File : run_main.py
- # @Software: PyCharm
- import os
- import unittest
- import time
- import HTMLTestRunner
- import smtplib
- from email.mime.text import MIMEText
- from email.mime.multipart import MIMEMultipart
- cur_path = os.path.dirname(os.path.realpath(__file__))
- def add_case(caseName='case',rule='test*.py'):
- case_path = os.path.join(cur_path, caseName)
- if not os.path.exists(case_path):
- os.mkdir(case_path)
- print('test case path:%s' %case_path)
- discover = unittest.defaultTestLoader.discover(case_path,
- pattern=rule,
- top_level_dir=None)
- print(discover)
- return discover
- def run_case(all_case,reportName='report'):
- now = time.strftime('%Y_%m_%d_%H_%M_%S')
- report_path = os.path.join(cur_path, reportName)
- if not os.path.exists(report_path):
- os.mkdir(report_path)
- report_abspath = os.path.join(report_path, now + 'result.html')
- print('test case path:%s' %report_abspath)
- fp = open(report_abspath, 'wb')
- runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
- title='自动化测试报告:',
- description='用例执行情况')
- runner.run(all_case)
- fp.close()
- def get_report_file(report_path):
- lists = os.listdir(report_path)
- lists.sort(key=lambda fn: os.path.getmtime(os.path.join(report_path, fn)))
- print('最新测试生成报告:' + lists[-1])
- report_file = os.path.join(report_path, lists[-1])
- return report_file
- def send_mail(sender,password,receiver,smptserver,report_file,port):
- with open(report_file, 'rb') as f:
- mail_body = f.read()
- msg = MIMEMultipart()
- body = MIMEText(mail_body,_subtype='html',_charset='utf-8')
- msg["subject"] = "自动化测试报告"
- msg["from"] = sender
- msg["to"] = receiver
- msg.attach(body)
- att = MIMEText(open(report_file,'rb').read(), 'base64', 'utf-8')
- att['Content-Type'] = 'application/octet-stream'
- att['Content-Disposition'] = 'attachment; filename="report.html"'
- msg.attach(att)
- try:
- smtp = smtplib.SMTP_SSL(smptserver,port)
- except:
- smtp = smtplib.SMTP()
- smtp.connect(smptserver,port)
- smtp.login(sender,password)
- smtp.sendmail(sender,receiver,msg.as_string())
- smtp.quit()
- print('test report email has send out !')
- if __name__ == "__main__":
- all_case = add_case()
- run_case(all_case)
- report_path = os.path.join(cur_path,'report')
- report_file = get_report_file(report_path)
- from jiekou_test.config import readConfig
- sender = readConfig.sender
- password = readConfig.password
- smtp_server = readConfig.smtp_server
- port = readConfig.port
- receiver = readConfig.receiver
- send_mail(sender,password,receiver,smtp_server,report_file,port)
自动化测试基础篇--Selenium unittest生成测试报告(HTMLTestRunner)的更多相关文章
- 自动化测试基础篇--Selenium unittest简介
一.什么是unittest unittest是Python单元测试框架,类似于JUnit框架. unittest中有4个重要的概念:test fixture, test case, test suit ...
- 3.5 unittest生成测试报告HTMLTestRunner
3.5 unittest生成测试报告HTMLTestRunner 前言批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的.unittest里面是不 ...
- python接口自动化测试(七)unittest 生成测试报告
用例的管理问题解决了后,接下来要考虑的就是报告我问题了,这里生成测试报告主要用到 HTMLTestRunner.py 这个模块,下面简单介绍一下如何使用: 一.下载HTMLTestRunner下载: ...
- 自动化测试基础篇--Selenium发送测试报告邮件
来自:https://www.cnblogs.com/sanzangTst/p/8377870.html 发邮件需要用到python两个模块,smtplib和email,这俩模块是python自带的, ...
- 自动化测试基础篇--Selenium框架设计(POM)
一.自动化测试框架 感谢木棉花的漂泊分享,内容转自链接:http://www.cnblogs.com/fengyiru6369/p/8053035.html 1.什么是自动化测试框架 简单来说,自动化 ...
- 自动化测试基础篇--Selenium简单的163邮箱登录实例
摘自https://www.cnblogs.com/sanzangTst/p/7472556.html 前面几篇内容一直讲解Selenium Python的基本使用方法.学习了什么是selenium: ...
- 自动化测试基础篇--Selenium元素定位
摘自https://www.cnblogs.com/sanzangTst/p/7457111.html 一.Selenium元素定位的重要性: Web自动化测试的操作:获取UI页面的元素,对元素进行操 ...
- 自动化测试基础篇--Selenium文件上传send_keys
摘自https://www.cnblogs.com/sanzangTst/p/8358165.html 文件上传是web页面上很常见的一个功能,自动化成功中操作起来却不是那么简单. 一般分两个场景:一 ...
- 自动化测试基础篇--Selenium鼠标键盘事件
摘自https://www.cnblogs.com/sanzangTst/p/7477382.html 前面几篇文章我们学习了怎么定位元素,同时通过实例也展示了怎么切换到iframe,怎么输入用户名和 ...
随机推荐
- 【Kafka】Consumer配置
从0.9.0.0开始,下面是消费者的配置. 名称 描述 类型 默认值 bootstrap.servers 消费者初始连接kafka集群时的地址列表.不管这边配置的什么地址,消费者会使用所有的kafka ...
- php 使用 rabbitmq
1,配置好rabbitmq 服务器 (参照 http://www.cnblogs.com/spicy/p/7017603.html)(我是linux) 2,新增了一个用户 并点击该用户 增加权限如下
- 《LeetBook》LeetCode题解(2):Add Two Numbers [M]
我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...
- 用通俗的语言解释 Spring 中的 DI 、IOC 和AOP概念
DI 所谓依赖,从程序的角度看,就是比如A要调用B的方法,那么A就依赖于B,反正A要用到B,则A依赖于B.所谓倒置,你必须理解如果不倒置,会怎么着,因为A必须要有B,才可以调用B,如果不倒置,意思就是 ...
- Vue 中 export default 和 module.exports
export default 服从 ES6 的规范,补充:default 其实是别名 module.exports 服从CommonJS 规范 一般导出一个属性或者对象用 export default ...
- 设置spacevim字体显示乱码问题
https://github.com/powerline/fonts clone powerline fonts 仓库 执行项目中的 install.sh 安装字体 修改终端配置中使用的字体为 xxx ...
- 深入redis内部--字典实现
redis的字典定义和实现在dict.h和dict.c文件中. 1.字典结构 typedef struct dict { dictType *type; //定义了字典需要的函数 void *priv ...
- Hadoop学习笔记(10) ——搭建源码学习环境
Hadoop学习笔记(10) ——搭建源码学习环境 上一章中,我们对整个hadoop的目录及源码目录有了一个初步的了解,接下来计划深入学习一下这头神象作品了.但是看代码用什么,难不成gedit?,单步 ...
- js只允许输入数字和两位小数
一.js只允许输入数字和两位小数 //只允许输入数字和两位小数 function clearNoNum(obj) { obj.value = obj.value.replace(/[^\d.]/g, ...
- 二、hdfs单节点安装
一.准备环境 在配置hdfs之前,我们需要先安装好hadoop的配置,本文主要讲述hdfs单节点的安装配置. hadoop的单节点安装配置请参考:https://www.cnblogs.com/lay ...