Python + Requests + BeautifulSoup每日BUG汇总

导言:最近实在是看不下去开发那边修复BUG的速度,每次需要催,心好累,想了想,还是每日发个邮件发给他们还有多少个BUG需要修复,每天剩余BUG数不能多于5个,公司BUG在easybug上,用Python + Requests 直接抓取下来,用BeautifulSoup对抓取的数据进行分解,直接上代码

# -*- coding:utf-8 -*-
import requests
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from bs4 import BeautifulSoup


# 发送邮件
def send_email(result):
    msg = MIMEMultipart()
    msg['From'] = "3176592143@qq.com"
    msg['To'] = "407708323@qq.com"
    msg['Subject'] = u"每日BUG汇总"
    txt = MIMEText(_text=result, _charset='utf-8')
    msg.attach(txt)
    smtp = smtplib.SMTP()
    smtp.connect('smtp.qq.com')
    smtp.login('3176592143@qq.com', '******') #QQ邮箱账号密码
    smtp.sendmail('3176592143@qq.com', '********@qq.com', msg.as_string())
    # smtp.sendmail('3176592143@qq.com', '*******@qq.com', msg.as_string())   # 黄总
    # smtp.sendmail('3176592143@qq.com', '*******@qq.com', msg.as_string())  # 冉冉
    # smtp.sendmail('3176592143@qq.com', '*******@qq.com', msg.as_string())  # cc
    # smtp.sendmail('3176592143@qq.com', '*******@qq.com', msg.as_string())  # 双武
    # smtp.sendmail('3176592143@qq.com', '*******@qq.com', msg.as_string())  # 儒鑫
    # smtp.sendmail('3176592143@qq.com', '*******@qq.com', msg.as_string())  # 强哥
    # smtp.sendmail('3176592143@qq.com', '*******@qq.com', msg.as_string())  # 静静
    smtp.quit()


# 从easyBug获取创建的BUG
def get_bug(page_index):
    url = "http://easybug.org/Bug/MyCreateBug_Page"
    headers = {
        'Host': 'easybug.org',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0',
        'Accept': '*/*',
        'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
        'Accept-Encoding': 'gzip, deflate',
        'DNT': '1',
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
        'X-Requested-With': 'XMLHttpRequest',
        'Referer': 'http://easybug.org/Bug/MyBug/12885\r\n',
        'Connection': 'keep-alive'
    }
    cookies = {
        "Hm_lvt_4e8e8dfab7ab20a93bb4445871ad4a28": "1452150644,1452215968,1452308865,1452475101; "
        "rememberMe=****@qq.com; UserID=465D4B60B975; "
        "UserName=E3720B3EAA83FDE5CAC0F95A62E1413B5D7F71BF1AEF; "
        "UserNiceName=106476EA41A9F7B7; Language=305B5DBC88820F14; "
        "TeamID=761A2E6CB2F1C806; Hm_lpvt_4e8e8dfab7ab20a93bb4445871ad4a28=1452492813; "
        "HasNewspermission=; ASP.NET_SessionId=51fjab55opx1u12mn3nj2345"
    }
    payload = {
        "pid": "12886",
        "priority": "0",
        "bugStatus": "1",
        "keyword": "",
        "pageIndex": page_index,
        "orderBy": ""
    }
    r = requests.post(url, headers=headers, cookies=cookies, params=payload)
    return r.text.encode("utf-8")


# 获取BUG页数
def get_bug_num():
    html = get_bug("1")
    soup = BeautifulSoup(html, "lxml")
    td_bug_num = soup.find("div", "PageTop").find_all("td", "tablebody1")
    nums = 0
    for m in range(len(td_bug_num)):
        nums += 1
    bug_num = nums - 5
    return bug_num


# 发送BUG邮件
def send_bug_mail():
    body = u"温馨提示:请不要堆积BUG,每天下午5点会发邮件提示,每天剩余BUG数不能超过5个\n\n至今未修复BUG总数:"
    bug_title_mark = u"BUG标题:"
    bug_href_mark = u"  BUG链接:"
    bug_rate_mark = u"  BUG等级:"
    bug_status_mark = u"    BUG状态:"
    bug_belong_mark = u"    BUG归属:"
    bug_type_mark = u"  BUG类型:"
    bug_version_mark = u"   BUG版本:"
    bug_time_mark = u"  BUG创建时间:"
    base_url = "http://easybug.org"
    bug_total_num = 0
    bug_total_android = 0
    bug_total_ios = 0
    bug_total_web = 0
    bug_total_back = 0
    bug_num = get_bug_num()
    bug_title = []
    bug_href = []
    bug_rate = []
    bug_status = []
    bug_belong = []
    bug_type = []
    bug_version = []
    bug_time = []
    android = ""
    ios = ""
    backstage = ""
    web = ""
    for n in range(int(bug_num)):
        html = get_bug(n+1)
        soup = BeautifulSoup(html, "lxml")
        tr = soup.find_all("tr", "GrayBackground")
        for m in range(len(tr)):
            bug_total_num += 1
            td = tr[m].find_all("td")
            bug_title.append(td[0].get_text().strip())
            bug_href.append(base_url + td[0].find("a").get("href"))
            bug_rate.append(td[1].get_text().strip())
            bug_status.append(td[2].get_text().strip())
            bug_belong.append(td[3].get_text().strip())
            bug_type.append(td[4].get_text().strip())
            bug_version.append(td[5].get_text().strip())
            bug_time.append(td[6].get_text().strip())
    for n in range(len(bug_type)):
        if bug_type[n] == "Android":
            android += bug_title_mark + bug_title[n] + bug_href_mark + bug_href[n] + bug_rate_mark + bug_rate[n] + \
                bug_status_mark + bug_status[n] + bug_belong_mark + bug_belong[n] + bug_type_mark + bug_type[n] + \
                bug_version_mark + bug_version[n] + bug_time_mark + bug_time[n] + "\n"
            bug_total_android += 1
        elif bug_type[n] == "iOS":
            ios += bug_title_mark + bug_title[n] + bug_href_mark + bug_href[n] + bug_rate_mark + bug_rate[n] + \
                bug_status_mark + bug_status[n] + bug_belong_mark + bug_belong[n] + bug_type_mark + bug_type[n] + \
                bug_version_mark + bug_version[n] + bug_time_mark + bug_time[n] + "\n"
            bug_total_ios += 1
        elif bug_type[n] == u"web":
            web += bug_title_mark + bug_title[n] + bug_href_mark + bug_href[n] + bug_rate_mark + bug_rate[n] + \
                bug_status_mark + bug_status[n] + bug_belong_mark + bug_belong[n] + bug_type_mark + bug_type[n] + \
                bug_version_mark + bug_version[n] + bug_time_mark + bug_time[n] + "\n"
            bug_total_web += 1
        else:
            backstage += bug_title_mark + bug_title[n] + bug_href_mark + bug_href[n] + bug_rate_mark + bug_rate[n] + \
                bug_status_mark + bug_status[n] + bug_belong_mark + bug_belong[n] + bug_type_mark + bug_type[n] + \
                bug_version_mark + bug_version[n] + bug_time_mark + bug_time[n] + "\n"
            bug_total_back += 1
    body += str(bug_total_num) + u"\n【Android今日剩余BUG:】" + str(bug_total_android) + u"个\n" + \
        android + u"\n【IOS今日剩余BUG:】" + str(bug_total_ios) + u"个\n" + \
        ios + u"\n【Web今日剩余BUG:】"+ str(bug_total_web) + u"个\n" + \
        web + u"\n【后台今天剩余BUG:】" + str(bug_total_back) + u"个\n" + backstage
    send_email(body)

if __name__ == "__main__":
    send_bug_mail()

总结:
测试作为质检部门,不严格要求不行噢。上线出问题了各种测试怎么回事?!唉

本人利用Bootstrap + EasyUI + Django开发网站:http://www.xuyangting.com/ 欢迎来访

阳台测试: 239547991(群号)

本人博客:http://xuyangting.sinaapp.com/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值