Python + Requests + BeautifulSoup每日BUG汇总
2016-01-13 10:09
776 查看
导言:最近实在是看不下去开发那边修复BUG的速度,每次需要催,心好累,想了想,还是每日发个邮件发给他们还有多少个BUG需要修复,每天剩余BUG数不能多于5个,公司BUG在easybug上,用Python + Requests 直接抓取下来,用BeautifulSoup对抓取的数据进行分解,直接上代码
总结:
测试作为质检部门,不严格要求不行噢。上线出问题了各种测试怎么回事?!唉
本人利用Bootstrap + EasyUI + Django开发网站:http://www.xuyangting.com/ 欢迎来访
阳台测试: 239547991(群号)
本人博客:http://xuyangting.sinaapp.com/
# -*- 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/
相关文章推荐
- Robot Framework: 自定义自己的python库
- python赋值对象的指向改变规律
- WingIDE5.1安装以及激活(Python集成环境的搭建)
- [Leetcode]6. ZigZag Conversion @python
- Python时间模块datetime、time、calendar的使用方法
- 详解python时间模块中的datetime模块
- python基础入门学习笔记(Python环境搭建)
- Python数据类型学习笔记
- python编辑工具pycharm中文输入报错解决方法
- [Python]python中的__import__
- python学习第三天
- Python爬虫学习稿(三)
- python学习记录(1)
- Python合并两个列表的方法
- python核心编程-正则表达式之-重复、特殊字符、子组
- [Python标准库]datetime——日期和时间值管理
- python---购物
- 运维:windows+python+route的一次相遇
- python列表推导的几个例子
- python入门-基础知识