1. # -*- coding:utf-8 -*-
  2.  
  3. '''
    @project: Voctest
    @author: Jimmy
    @file: sendMail.py
    @ide: PyCharm Community Edition
    @time: 2018-11-15 17:14
    @blog: https://www.cnblogs.com/gotesting/
  4.  
  5. '''
  6.  
  7. import os
    import smtplib
    import time
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
    from Common.log import Log
    from Config.globalConfig import report_path
  8.  
  9. logger = Log()
    # 配置收发件人
    recv_address = ['641969198@qq.com']
    # 163的用户名和密码
    send_addr_name = 'jxy641969198@163.com'
    send_addr_pswd = 'jiaxy19920319'
  10.  
  11. class SendMail:
    def __init__(self, recver=None):
    """接收邮件的人:list or tuple"""
    if recver is None:
    self.sendTo = recv_address
    else:
    self.sendTo = recver
  12.  
  13. def get_report(self):
    """获取最新测试报告"""
    lists = os.listdir(report_path)
    lists.sort()
    send_report = lists[-1]
    print('The send report name: {0}'.format(send_report))
    return send_report
  14.  
  15. def take_messages(self):
    """生成邮件的内容,和html报告附件"""
    report = self.get_report()
    self.msg = MIMEMultipart()
    self.msg['Subject'] = 'VOC自动化测试报告'
    self.msg['date'] = time.strftime('%a, %d %b %Y %H:%M:%S %z')
  16.  
  17. with open(os.path.join(report_path, report), 'rb') as f:
    mailbody = f.read()
    html = MIMEText(mailbody, _subtype='html', _charset='utf-8')
    self.msg.attach(html)
  18.  
  19. # html附件
    att1 = MIMEText(mailbody, 'base64', 'gb2312')
    att1["Content-Type"] = 'application/octet-stream'
    att1["Content-Disposition"] = 'attachment; filename="VocAutoTestReport.html"'
    self.msg.attach(att1)
  20.  
  21. def send(self):
    """发送邮件"""
    self.take_messages()
    self.msg['from'] = send_addr_name
    try:
    smtp = smtplib.SMTP('smtp.163.com', 25)
    smtp.login(send_addr_name, send_addr_pswd)
    smtp.sendmail(self.msg['from'], self.sendTo, self.msg.as_string())
    smtp.close()
    logger.log_info("发送邮件成功")
    except Exception:
    logger.log_error('发送邮件失败')
    raise

python - 自动化测试框架 - sendMail的更多相关文章

  1. 【转】推荐4个不错的Python自动化测试框架

    之前,开发团队接手一个项目并开始开发时,除了项目模块的实际开发之外,他们不得不为这个项目构建一个自动化测试框架.一个测试框架应该具有最佳的测试用例.假设(assumptions).脚本和技术来运行每一 ...

  2. (原创)Python 自动化测试框架详解

    自己折腾了一个python的自动化测试框架,梳理了一下流程,简单分享一下. 项目背景 B/S架构,进行用户界面的自动化测试 工具选择 python开发的自动化测试框架,足够灵活,可以随时根据需求进行变 ...

  3. Selenium WebDriver + python 自动化测试框架

    目标 组内任何人都可以进行自动化测试用例的编写 完全分离测试用例和自动化测试代码,就像写手工测试用例一下,编写excel格式的测试用例,包括步骤.检查点,然后执行自动化工程,即可执行功能自动化测试用例 ...

  4. Python+自动化测试框架的设计编写

    Python之一个简单的自动化测试框架:https://baijiahao.baidu.com/s?id=1578211870226409536&wfr=spider&for=pc h ...

  5. python自动化测试框架unittest

    对于刚学习python自动化测试的小伙伴来说,unittest是一个非常适合的框架: 通过unittest,可以管理测试用例的执行,自动生成简单的自动化测试报告: 首先我们尝试编写编写一个最简单的un ...

  6. python自动化测试框架

    一.环境准备 1.python开发环境, python3.7 2.setuptools基础工具包 3.pip安装包管理工具 4.selenium自动化测试工具  chrom驱动下载地址: http:/ ...

  7. 解除你学习Python自动化测试框架的所有疑惑,开启学习直通车

    学习框架第一步 前言 很多同学学完Python基础后出现迷茫......有同感的小伙伴,点赞关注........ 学习完Python还要学习什么? 什么是自动化测试框架? 如何搭建自动化测试框架? 甚 ...

  8. python自动化测试框架学习

    今天发现python有多个框架可以用于自动化测试方面,下面整理了下splinter和urllib2框架,对于pywinauto框架和ruby框架先记录下以后需要用到再学习. python有个splin ...

  9. Python 自动化测试框架 unittest 和 pytest 对比

    一.用例编写规则 1.unittest提供了test cases.test suites.test fixtures.test runner相关的类,让测试更加明确.方便.可控.使用unittest编 ...

随机推荐

  1. JS和jquery获取各种屏幕的宽度和高度的代码

    Javascript: 网页可见区域宽: document.body.clientWidth 网页可见区域高: document.body.clientHeight 网页可见区域宽: document ...

  2. mui轮播图

    轮播组件是mui提供的一个核心组件,在该核心组件基础上,衍生出了图片轮播.可拖动式图文表格.可拖动式选项卡.左右滑动9宫格等组件,这些组件有较多共同点.Dom构造: <div class=&qu ...

  3. UWP开发:自动生成迷宫&自动寻路算法(2)

    之后我们编写一个类,同时创建一个List,将List与前端的Rectangle绑定. public static List<Rect> Rects { get; set; }Rects = ...

  4. noip模拟赛#14

    #14: T1:f[x]=x-1(x&1)||x/2(x&1=0) 求[n,m]有多少个数可以通过变换得到k.(1e9). =>好像cf上看过类似的题,用二进制的方式来写.不过我 ...

  5. FMDB的使用方法(附Demo)

    http://www.jianshu.com/p/54e74ce87404 最近在项目中需要在多个页面对同样的数据进行相关操作,于是便用到了FMDB数据库操作,以下便是FMDB的一些简单的使用方法.附 ...

  6. 香港城市大学:全球首创3D打印微型机器人技术 有望作治疗癌症用途

    香港城市大学(香港城大)的研究团队开发出了全球首创以磁力控制的3D打印微型机器人,该微型机器人技术能做到在生物体内精准运载细胞到指定的位置.新研发的微型机器人有望应用在治疗癌症的靶向治疗,并为细胞层面 ...

  7. 在DataGridView控件中显示下拉列表

    实现效果: 知识运用: DataGridViewComboBoxColumn类 //通过该类可以创建下拉列表样式的列 实现代码: private void Form1_Load(object send ...

  8. oracle没有监听和监听程序无法找到适用于客户机连接的例程

    1.无监听,可以尝试下以下几种办法: 1)在net manager中重新配置监听.我的net manager监听点开不了,把ADMIN下的listener.ora删掉再去打开试试. 2)cmd中输入n ...

  9. LeetCode 53题 最大子序和 -- JavaScript

    解题思路分析: 该题是在一个整数数组中找到一个和最大的连续子数组,并返回和值.那么如何找到一个和最大的连续子数组呢?我们知道,这肯定需要遍历数组才行:好,那我们就开始遍历数组.首先,我们初始化最大和 ...

  10. Web服务器 --> 基于HTTP的网站开发

    经过几十年的发展,已经出现几个成熟的处理HTTP的知名的Web服务器.这些服务器可以解析(handle)HTTP,当Web服务器接收到一个HTTP请求时,会根据配置的内容返回一个静态HTML页面或者调 ...