jmeter+jenkins+ant发送邮件

18 篇文章 1 订阅
1 篇文章 0 订阅

准备工作:

jenkins+jmeter+ant+mysql+python


流程图:


安装配置篇:

1、jmeter+jenkins+ant 安装略

2、python3.6版本安装略(配置环境变量;安装pyinstaller:pip install pyinstaller;安装jinjia2: pip install jinjia2 官网:http://docs.jinkan.org/docs/jinja2/)

3、jenkins ant构建完成之后,构建execute Windows batch command执行python命令C:\Users\kevin\dist\SelectData.exe


代码如下:

SendEmail.py

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import time
from jinja2 import Template

def test01(str):
    mail_host="smtp.miao.cn"
    mail_user="weiqqidong@miao.cn"
    mail_pass="qw"
    sslPort="465"
    time1=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))


    sender = 'weixidong@miao.cn'
    receivers = ['weiqqidong@miao.cn']


  #  message = MIMEText(time1+'_'+str, 'plain', 'utf-8')
    message = MIMEText(str, _subtype='html', _charset='utf-8')
    message['From'] = Header("weiqqidong@miao.cn", 'utf-8')
    message['To'] =  Header("weiqqidong@miao.cn", 'utf-8')

    subject ='接口自动化测试报告'+'-'+time1
    message['Subject'] = Header(subject, 'utf-8')


    try:
       # smtpObj = smtplib.SMTP()
       # smtpObj.connect(mail_host, 25)
      #  smtpObj.login(mail_user,mail_pass)

        smtpObj = smtplib.SMTP_SSL(mail_host,sslPort)
        smtpObj.ehlo()
        smtpObj.login(mail_user,mail_pass)
        smtpObj.sendmail(sender, receivers, message.as_string())
        print ("邮件发送成功")

    except Exception as n:
        print ("Error: 无法发送邮件")
        print(n)

ReturnData.py

#coding=utf-8
__author__ = 'kevin'
import pymysql
from Send.SendEmail import test01
import json
from jinja2 import Template
import time



def recode():
   #  time2=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
     demo_list= list()
     # 连接数据库
     connect = pymysql.Connect(
     host='172.31.85.110',
     port=3306,
     user='root',
     passwd='a12345',
     db='autotest',
     charset='utf8'
     )

     t= '''
        <html>
        <body>
        <table border=1 cellpadding=10>
        <tr>
        <h4>异常业务接口详情:</h4>
        <table border="1">
        <tr>
        <td width="200"><b>name</b></td>
       <td width="200"><b>status</b></td>
       <td width="200"><b>msg</b></td>
        </tr>
        </tr>
        {% for d in demo %}
        <tr>
        <td>
        {{ d.name }}
        </td>
        <td>
       {{ d.status }}
        </td>
        <td>
        {{ d.msg }}
        </td>
        </tr>
        {% endfor %}
        </table>
        </body>
        </html>
        '''
     cursor = connect.cursor()
     # 查询异常数据
     sql="SELECT a.name ,b.status,b.msg FROM interfacename AS a,DATA AS b WHERE a.id=b.InterfaceId AND b.status<>200 AND createtime>(SELECT DATE_SUB(NOW(), INTERVAL 1 HOUR)) AND createtime<(SELECT DATE_ADD(NOW(), INTERVAL 1 HOUR))"
     try:
        cursor.execute(sql)
        results = cursor.fetchall()
        print(results)
        for row in results:
           name=row[0]
           status=row[1]
           msg=row[2]
           demo = dict()
           demo["name"] = name
           demo["status"] = status
           demo["msg"] = msg
           # print(msg,type(msg))
           demo_list.append(demo)
          # return demo_list
      # 打印结果
            #print("name=%s,status=%s,msg=%s" % (row[0],row[1],row[2] ))
          # print("name:%s status:%s msg:%s"%(row[0],row[1],row[2] ))
            #map(None,row[0])
        template = Template(t)
        result = template.render(demo=demo_list)
        # print(result)
        # print(demo_list)

        test01(result)
     except Exception as e:
        print(e)
        print("Error: unable to fecth data")
        cursor.close()
        connect.close()

selectdata.py

#coding=utf-8
__author__ = 'kevin'

import pymysql
from Send.SendEmail import test01
from Send.ReturnData import recode
import time
 # 连接数据库
connect = pymysql.Connect(
host='172.31.85.110',
 port=3306,
 user='root',
 passwd='a12345',
db='autotest',
charset='utf8'
)
cursor = connect.cursor()
 # 查询数据
sql="SELECT COUNT(1) FROM DATA WHERE STATUS<>200 and createtime>(SELECT DATE_SUB(NOW(), INTERVAL 1 HOUR)) AND createtime<(SELECT DATE_ADD(NOW(), INTERVAL 1 HOUR))"
cursor.execute(sql)
data = cursor.fetchone()
print ("error data count is : %s " % data)
print(data[0])

if data[0]!= 0:
       recode()
else:
   print("dddd")
   cursor.close()
   connect.close()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值