自动化测试基础篇--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,怎么输入用户名和 ...
随机推荐
- 使用grunt搭建自动化的web前端开发环境
使用grunt搭建自动化的web前端开发环境 我们一定经常听过grunt和gulp,它们都是用于搭建自动化的web前端开发环境的,这里主要介绍grunt的使用,值得一提的是,jQuery.bootst ...
- MyBatis异常总结
1 Invalid bound statement 1 org.apache.ibatis.binding.BindingException: Invalid bound statement (not ...
- JavaScript设计模式-9.工厂模式
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- R语言数据重塑cbind+rbind+merge+ melt+cast
R语言中的数据重塑是关于变化的数据分为行和列的方式.大多数R地数据处理的时候是通过将输入的数据作为一个数据帧进行.这是很容易提取一个数据帧的行和列数据,但在某些情况,当我们需要的数据帧的格式是不同的来 ...
- webbrowser控件使用时的注意事项
如果HtmlElement内的没有信息,则HtmlElement的OuterText属性值为null:OuterHtml属性值则为相应的html值 如果使用OuterText属性,使用前要判断下.
- 问题集录--jquery将json转excel保持
代码如下: <html> <head> <meta http-equiv="content-type" content="text/html ...
- 【SSH网上商城项目实战10】商品类基本模块的搭建
转自:https://blog.csdn.net/eson_15/article/details/51354932 前面我们完成了与商品类别相关的业务逻辑,接下来我们开始做具体商品部分. 1. 数据库 ...
- C#学习笔记-模板方法模式
题目:同学摘抄老师给的试卷并给出自己的对应的答案. 实现: static void Main(string[] args) { Console.WriteLine("学生甲抄的试卷:&quo ...
- POJ P3667 Hotel——solution
Description The cows are journeying north to Thunder Bay in Canada to gain cultural enrichment and e ...
- JavaWeb学习总结(一):基本概念
一.基本概念 1.1.WEB开发的相关知识 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 静态web资源( ...