您的位置:首页 > 编程语言 > Python开发

Python + Requests + BeautifulSoup每日BUG汇总

2016-01-13 10:09 776 查看
导言:最近实在是看不下去开发那边修复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
== "Android":
android += bug_title_mark + bug_title
+ bug_href_mark + bug_href
+ bug_rate_mark + bug_rate
+ \
bug_status_mark + bug_status
+ bug_belong_mark + bug_belong
+ bug_type_mark + bug_type
+ \
bug_version_mark + bug_version
+ bug_time_mark + bug_time
+ "\n"
bug_total_android += 1
elif bug_type
== "iOS":
ios += bug_title_mark + bug_title
+ bug_href_mark + bug_href
+ bug_rate_mark + bug_rate
+ \
bug_status_mark + bug_status
+ bug_belong_mark + bug_belong
+ bug_type_mark + bug_type
+ \
bug_version_mark + bug_version
+ bug_time_mark + bug_time
+ "\n"
bug_total_ios += 1
elif bug_type
== u"web":
web += bug_title_mark + bug_title
+ bug_href_mark + bug_href
+ bug_rate_mark + bug_rate
+ \
bug_status_mark + bug_status
+ bug_belong_mark + bug_belong
+ bug_type_mark + bug_type
+ \
bug_version_mark + bug_version
+ bug_time_mark + bug_time
+ "\n"
bug_total_web += 1
else:
backstage += bug_title_mark + bug_title
+ bug_href_mark + bug_href
+ bug_rate_mark + bug_rate
+ \
bug_status_mark + bug_status
+ bug_belong_mark + bug_belong
+ bug_type_mark + bug_type
+ \
bug_version_mark + bug_version
+ bug_time_mark + bug_time
+ "\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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: