Appium+python 自动发送邮件(2)(转)
(原文:https://www.cnblogs.com/fancy0158/p/10056418.html)
移动端执行完测试case之后,通过邮件自动发送测试报告。大体流程如下:
1、通过unittest框架的discover()发现所有测试用例
2、使用HTMLTestRunner的run()方法运行测试用例,生成HTML测试报告
3、寻找测试报告目录下的最新测试报告,返回最新测试报告的路径
4、将最新测试报告路径传给send_mail()函数,发送带HTML格式的邮件
# coding:utf-8
import unittest
import time
import smtplib
import os
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
from HTMLTestRunner import HTMLTestRunner testcase_dir = 'E:\\python_work\\appium\\test_app\\testcase' # 测试用例路径
testreport_dir = 'E:\\python_work\\appium\\test_app\\report' # 测试报告路径 # 发送邮件
def sendmail(sendfile):
smtpserver = 'smtp.qq.com'
user = 'username@qq.com '
password = 'password'
sender = 'username@qq.com'
receiver = 'receiver@163.com'
subject = '自动化测试报告' f = open(sendfile, 'rb')
mailbody = f.read() # 读取测试报告作为邮件正文
f.close() # 编写HTML类型的邮件正文
msg = MIMEText(mailbody, 'html', 'utf-8')
msg["Subject"] = Header(subject, 'utf-8') smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(user, password)
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()
print('Email has send out') # 查找目录下最新生成的测试报告,返回最新报告的详细路径
def find_Report(reportpath):
lists = os.listdir(reportpath)
lists.sort(key=lambda fn: os.path.getmtime(reportpath + "\\" + fn))
newfile = os.path.join(reportpath, lists[-1])
print(newfile)
return newfile # 运行case,并生成测试报告
def run_case():
discover = unittest.defaultTestLoader.discover(testcase_dir, pattern='test*.py')
now_time = time.strftime("%Y%m%d_%H-%M-%S")
fp = open(testreport_dir + '\\' + now_time + '_TestResult.html', 'wb')
runner = HTMLTestRunner(
stream=fp,
title='测试报告',
description='测试用例执行情况',
)
runner.run(discover) # 运行case,生成HTML测试报告
fp.close() if __name__ == '__main__':
run_case()
new_report = find_Report(testreport_dir)
sendmail(new_report)
收到的邮件如下:

Appium+python 自动发送邮件(2)(转)的更多相关文章
- Appium+python 自动发送邮件(1)(转)
(原文:https://www.cnblogs.com/fancy0158/p/10056091.html) SMTP:简单传输协议,实在Internet上传输Email的事实标准. Python的s ...
- 用Python自动发送邮件
用Python自动发送邮件 最近需要在服务器上处理一些耗时比较长的任务,因此想到利用python写一个自动发送邮件的脚本,在任务执行完毕后发送邮件通知我.以下代码以163邮箱为例: 开通163 ...
- python☞自动发送邮件
一.SMTP 协议 SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式 二.smtplib ...
- 【Python】利用python自动发送邮件
前言 在训练网络的过程中,需要大量的时间,虽然可以预估网络训练完成时间,但蹲点看结果着实有点不太聪明的亚子. 因此,参照师兄之前发的python利用smtp自动发邮件的代码,我作了些调整,并参照网上的 ...
- 利用Python自动发送邮件
# -*- coding:utf-8 -*-from email.mime.text import MIMETextfrom email.header import Headerimport smtp ...
- python 自动发送邮件遇到的问题
在学习自动化测试高级应用,根据内容写关于自动发送邮件出现了几个问题以及解决办法: 问题1: 代码写好之后,运行的时候,出现如下报错: SMTPAuthenticationError: (550, '\ ...
- Python 自动发送邮件
简单邮件传输协议(SMTP)是一种协议,用于在邮件服务器之间发送电子邮件和路由电子邮件.Python提供smtplib模块,该模块定义了一个SMTP客户端会话对象,可用于使用SMTP或ESMTP侦听器 ...
- python自动发送邮件
Python 的 smtplib 模块提供了发送电子邮件的功能.测试报告出来后,然后就把报告发送到邮箱. 一.先来看简单的列子 使用QQ邮箱发送邮件,使用的是授权码,需要先到QQ邮箱申请授权码. 邮箱 ...
- Python自动发送邮件(可带附件)
Python内置对SMTP的支持,可以发送纯文本邮件.HTML邮件以及带附件的邮件. Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件 ...
随机推荐
- 子查询 SQL
SELECT *,(SELECT COUNT(*) FROM yd_order o WHERE FROM_UNIXTIME(o.`ctime`,'%Y-%m')='2016-06' AND o.uid ...
- Spring @Value 默认值
@Value(value = "${etl.maxthreadcount:3}") private long MaxThreadCount;
- 简单说明一下JS中的函数声明存在的“先使用,后定义”
首先看一段JS代码,其中使用了两种方式声明了两个函数,分别在不同的地方调用两个函数: <script> 'use strict'; // 输出hello函数 console.log(hel ...
- HDU 1158(非常好的锻炼DP思维的题目,非常经典)
题目链接: acm.hdu.edu.cn/showproblem.php?pid=1158 Employment Planning Time Limit: 2000/1000 MS (Java/Oth ...
- +QFTPOPEN: 603,0 怎么把这样一个字符串中的 603 提取出来给一个 uint32_t 的变量那
+QFTPOPEN: 603,0 怎么把这样一个字符串中的 603 提取出来给一个 uint32_t 的变量那? 注意冒号后面有个空格!!! 答案:要使用 sscanf 标准库函数! char s ...
- 【Dubbo源码阅读系列】服务暴露之本地暴露
在上一篇文章中我们介绍 Dubbo 自定义标签解析相关内容,其中我们自定义的 XML 标签 <dubbo:service /> 会被解析为 ServiceBean 对象(传送门:Dubbo ...
- 「微信小程序」PHP异步进程async-helper实例详解
PHP异步进程async-helper实例详解 PHP 的异步进程助手,借助于 AMQP 实现异步执行 PHP 的方法,将一些很耗时.追求高可用.需要重试机制的操作放到异步进程中去执行,将你的 HTT ...
- spring 包的依赖关系
转自:http://www.cnblogs.com/ywlaker/p/6136625.html 很多人都在用spring开发java项目,但是配置maven依赖的时候并不能明确要配置哪些spring ...
- Oracle日志文件
转载网站:Oracle技术圈 转载地址:https://www.oraclejsq.com/oraclegl/010300678.html Oracle日志文件 Oracle日志文件是Oracle数据 ...
- Vue 源码分析——构造函数原型
在执行 npm run dev 的时候 根据script/config.js 文件中的配置 'web-full-dev': { entry: resolve('web/entry-runtime-wi ...