实现需求:当测试用例全部通过的时候,不发邮件,当用例出现Error或Failure的时候发送邮件

解决思路:生成html测试报告后,用bs4解析html页面,写个函数判断页面上是都有不通过的记录

html报告

1.查看html报告,主要看Status这一行是否会出现Failure 或 Error 的记录

bs4解析html

1.bs4模块在我的博客上上海-悠悠之前有过介绍,就不重复写了,先定位html页面元素,先通过它的class属性:attribute定位到这三行记录

2.取出最后一行,然后读出文本内容。

# coding:utf-8

from bs4 import BeautifulSoup

# 打开html文件,读取报告内容

with open("result.html", "r", encoding="utf-8") as fp:

f = fp.read() # 读报告 # 解析html,查找class属性attribute soup = BeautifulSoup(f, "html.parser") status = soup.find_all(class_="attribute") # 打印查找内容 print(status) print("qq交流群:226296743") result = status[2].contents[-1] # 获取报告结果 print(result)

运行结果:

[

Start Time: 2018-01-18 16:35:49

,

Duration: 0:00:00

,

Status: Pass 2 Failure 1 Error 1

]

qq交流群:226296743

Pass 2 Failure 1 Error 1

写个判断函数

1.对结果判断,写个判断是否有失败用例的函数

# coding:utf-8

from bs4 import BeautifulSoup

import sys

reload(sys)

sys.setdefaultencoding('utf8')

def is_result_pass():

try:

with open("result.html", "r") as fp:

f = fp.read() # 读报告

soup = BeautifulSoup(f, "html.parser")

status = soup.find_all(class_="attribute")

result = status[2].contents[-1] # 获取报告结果

if "Failure" in result or "Error" in result:

print("测试过程有不通过用例:%s"%result)

return False

else:

return True

except Exception as msg:

print("判断过程出现异常:%s"%str(msg))

return False

if __name__ == "__main__":

print("qq交流群:226296743")

res = is_result_pass()

print(res)

运行结果:

测试过程有不通过用例: Pass 2 Failure 1 Error 1

False

2.在最后发邮件之前加个判断

if not is_result_pass():

# 判断html报告是否有报错

# 执行发送邮件函数,自己写一个发邮件函数

# send_mail(sender, psw, receiver, smtp_server, report_file)

else:

print("测试用例全部通过,不发送邮件")

自己写的整个封装:

# coding:utf-8

import unittest,time,os

from email.mime.text import MIMEText

import smtplib

from email.mime.image import MIMEImage

from email.mime.multipart import MIMEMultipart

from bs4 import BeautifulSoup

from email.utils import formataddr

from unittest import defaultTestLoader

import test

from baogao import HTMLTestRunner

from moxiu_lianxi import *

case_dir = r"C:\moxiulianxi\msq01\test_case"

def all_case():

discover = unittest.defaultTestLoader.discover(case_dir,pattern="test_00*.py",top_level_dir=None)

suite = unittest.TestSuite()

suite.addTest(discover)

return suite

def send_email(report_path,receiver):

a = open(report_path, "rb")

mail_body = a.read()

msg = MIMEMultipart()

body = MIMEText(mail_body, _subtype='html', _charset='utf-8')

msg['Subject'] = u"我自己发送的接口测试报告"

msg["from"] = "mashuqi@wetalktv.cn"

msg["to"] = ";".join(receiver)

msg.attach(body)

att = MIMEText(mail_body,'base64', _charset='utf-8')

att["Content-Type"] = "application/octet-stream"

att["Content-Disposition"] = 'attachment; filename="zhuti_jiekou_baogao.html"'

msg.attach(att)

smtp = smtplib.SMTP_SSL("smtp-n.global-mail.cn", 465) #全球网邮箱服务器

smtp.login("mashuqi@wetalktv.cn", "Abcd1234")

smtp.sendmail("mashuqi@wetalktv.cn", receiver, msg.as_string())

smtp.quit()

def Error_sendEmail(report_path,receiver):

try:

# 打开html文件,读取报告内容

with open(report_path, "r", encoding="utf-8") as fp: #注意:python3这里一定要加encoding="utf-8";否则会包gbk错误;

f = fp.read() # 读报告

soup = BeautifulSoup(f, "html.parser")

status = soup.find_all(class_="attribute")

resul = status[2] # 获取报告结果

result = str(resul)

if "Failure" in result or "Error" in result:

print("测试过程有不通过用例:%s" % result)

# receiver = ["mashuqi@wetalktv.cn"]

send_email(report_path,receiver)

return False

else:

return True

except:

print("判断过程出现异常")

return False

if __name__=="__main__":

runner = unittest.TextTestRunner()

# # now = time.strftime("%Y-%m-%d %H_%M_%S", time.localtime())

# # report_path = r"D:\moxiulianxi\msq01\baogao\result" + now + ".html"

report_path = r"C:\moxiulianxi\msq01\baogao\result.html"

fp = open(report_path,"wb")

runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title=u'自动化测试生成测试报告-练习',description=u"测试结果:通过")

runner.run(all_case())

fp.close()

receiver = ["mashuqi@wetalktv.cn"]

# send_email(report_path,receiver)

Error_sendEmail(report_path,receiver)

python测试用例不通过发送报告_selenium+python自动化89-用例不通过的时候发送邮件...相关推荐

  1. python钉钉机器人发送excel附件_Python自动化办公|如何在钉钉上自动发送定制消息或通知给同事...

    日常工作中,你是否遇到以下情形: 想要第一时间获悉竞品app的最新版本的更新内容 想要监测行业最新资讯,并与同事分享 想要对某些业务数据进行阈值监控及报警 想要将同事在钉钉上反馈的问题自动同步到jir ...

  2. python接管已经打开ie浏览器_Selenium+Python浏览器调用:IE

    IE浏览器调用 IE浏览器驱动添加 这里我用的是IEDriverServer_Win32_2.43.0.zip,下载后解压,把IEDriverServer.exe放在python安装目录,与pytho ...

  3. python对浏览器的常用操作_selenium+python基本操作(02)

    前言 前一章节已经完成环境搭建,下面简单介绍下对浏览器的基本操作,让大家先了解一些简单的操作.这节主要介绍浏览器打开.刷新.前进.后退.截图.退出等功能. 1)打开浏览器 from selenium ...

  4. python爬虫selenium账号和密码_selenium + python 登录页面,输入账号、密码,元素定位问题...

    示例简介: 要求:登录QQ邮箱,输入账号.密码 出现问题:页面中含有iframe框架,因此直接进行元素的查找与操作,出现找不到元素的现象,首先需进行iframe框架的转换,使用switch_to_fr ...

  5. Python语言+pytest框架+allure报告+log日志+yaml文件+mysql断言实现接口自动化框架

    目录 前言 实现功能 目录结构 依赖库 安装教程 接口文档 如何创建用例 创建用例步骤 用例中相关字段的介绍 如何发送get请求 如何发送post请求 如何测试上传文件接口 上传文件接口,即需要上传文 ...

  6. python测试用例怎么写_Python单元测试unittest的具体使用示例

    Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. unittest是python的标准测试库,相比于其 ...

  7. 报告PPT|Python网络程序设计教学要点与案例分享(含音频)

    推荐教材: <Python网络程序设计>(ISBN:978-7-3025-8312-7),董付国著,清华大学出版社,2021年7月出版 配套资源:教学大纲.课件.91个例题源码.教案.20 ...

  8. python商业数据分析报告范文_python自动化撰写数据分析报告

    在工作中经常要出具各种报告,我们可以根据报告周期来设置定时任务自动生成数据分析报告.首先要确定报告模板,给模板中的每一个变动值赋予一个参数:然后根据业务需求再python中定义每个变动值的计算方式:最 ...

  9. 全球Python调查报告:Python 2正在消亡,PyCharm比VS Code更受欢迎

    作者 | 唐小引 题图 | 自东方 IC 出品 | AI科技大本营(ID:rgznai100) 一年一度的 Python 开发者调查报告终于发布了.该报告由 Python 软件基金会和 JetBrai ...

最新文章

  1. SQL Server2008及以上 表分区操作详解
  2. 操作系统导论中文版 pdf_一分钟带你认识微软操作系统 Windows 10
  3. 打破数据统一的七大原则
  4. 汇编中的条件转移指令
  5. day10 in india
  6. nginx 配置expires
  7. 数据结构与算法专题——第二题 优先队列
  8. 一文读懂开源许可证异同
  9. uboot启动 及命令分析(3)
  10. 学习资料(干货汇集)不断更新【更新于2017-9-17】
  11. 3月17日 基于特征点的RANSAC最优估计基础矩阵,稀疏光流法综述
  12. Android开发者必备工具-常见Android模拟器(MuMu、夜神、蓝叠、逍遥、雷电、Genymotion...)
  13. 开源网络教学平台SAKAI开发环境的搭建
  14. C语言程序的语法规范,C语言程序结构和语法规则
  15. LCD12864图形点阵液晶显示模块中文资料介绍
  16. 【生信技能树】GEO数据库挖掘 P5
  17. matlab如何求空间一点到直线距离,立体几何:如何用空间向量方法求点到直线的距离?...
  18. java和C程序员工资待遇差别大吗
  19. 三菱PLC控制器FX3GA USB驱动 程序下载
  20. Windows 检测PPT WPS 幻灯片播放并获取窗口句柄

热门文章

  1. 目标检测 YOLOv5 anchor设置
  2. uniapp 卡牌发放教程
  3. ChatGPT官方APP上线:速度极快且免费、增加语音识别!
  4. SIP 请求方法(1)-INVITE
  5. CCA,rCCA,gCCA
  6. js中对a标签增加click事件,事件不生效的解决方案
  7. xen EDD information not available
  8. 【ZZULIOJ】1006: 求等差数列的和
  9. Android点击悬浮窗回到应用,android悬浮窗应用
  10. hexo博客快速搭建