TA的每日心情 | 衰 2017-10-22 19:44 |
---|
签到天数: 1 天 连续签到: 1 天 [LV.1]测试小兵
|
本帖最后由 qwe1024547862 于 2017-8-8 11:37 编辑
如题,思路是:测试套件主函数里 执行用例,有异常报错的时候统一截图 加入到测试报告里面。 然后进行邮件发送,脚本写完了,就是不知道怎么在测试套件里 将截图加入到测试报告里面。 如果有大伙刚学习到这步的,也可以参考学习一下测试报告发邮件,我写的挺简单易懂的- # coding:utf-8
- from selenium import webdriver
- import unittest
- import os
- import HTMLTestRunner
- from HTMLTestRunner import HTMLTestRunner
- from email.mime.text import MIMEText
- from email.mime.multipart import MIMEMultipart
- from email.header import Header
- import smtplib
- import time
- #===========定义用例异常截图=========
- class screen(object):
- u"""截图"""
- def __init__(self,driver):
- self.driver=driver
- def __call__(self, f):
- def inner(*args):
- try:
- return f(*args)
- except:
- nowTime=time.strftime("%Y_%m_%d_%H_%M_%S")
- self.driver.get_screenshot_as_file('%s.jpg' % nowTime)
- raise
- return inner
- #这里写了截图方法, 但是不知道在测试套件里面实现
- #==============定义发送邮件==========
- def send_mail(file_new):
- _user='1024547862@qq.com' # 发件地址
- _pwd="llkwiqghqubebbjj" #服务器授权码
- _to="1192511945@qq.com" # 收件人地址,多人以分号分隔
- # f = open(file_new,'rb')
- # mail_body = f.read()
- # f.close()
- # 读取最新测试报告的内容
- with open(file_new, "rb") as f:
- mail_body = f.read()
- msg = MIMEMultipart()
- body = MIMEText(mail_body, 'html', 'utf-8')
- msg['Subject'] = Header("自动化测试报告", 'utf-8')
- msg['From'] = _user
- msg['To'] = _to
- msg.attach(body)
- #
- #
- #添加附件
- att=MIMEText(open(report_file,"rb").read(),"base64","utf-8")
- att["Content-Type"] = "application/octet-stream"
- att["Content-Disposition"] = 'attachment; filename= " Automated test report .html"'
- msg.attach(att)
- #
- #
- #发送邮件
- s = smtplib.SMTP_SSL("smtp.qq.com")
- # s.set_debuglevel(1)
- s.login(_user,_pwd) # 登录邮箱的账户和密码
- s.sendmail(_user,_to, msg.as_string())
- s.quit()
- print(u'自动化邮件已发送')
- #======查找测试目录,找到最新生成的测试报告文件======
- def new_report(test_report):
- lists = os.listdir(test_report) #列出目录的下所有文件和文件夹保存到lists
- lists.sort(key=lambda fn:os.path.getmtime(test_report + "\\" + fn))#按时间排序
- file_new = os.path.join(test_report,lists[-1]) #获取最新的文件保存到file_new
- print(file_new)
- return file_new
- if __name__ == "__main__":
- # unittest.TextTestRunner()
- test_report=r"D:" # 报告存放路径
- case_path = r"C:\Users\admin\PycharmProjects\yoyotest" #用例路径
- report_path = r"D:"# 报告存放路径
- report_file = new_report(report_path)# 获取最新的测试报告
- discover = unittest.defaultTestLoader.discover(case_path,
- pattern="test*.py", # 也可以指定具体脚本
- top_level_dir=None)
- print(discover)
- # return discover
- #======================测试报告============================
- # html报告文件路径
- now=time.strftime("%Y-%m-%d_%H-%M-%S") #加时间戳
- report_abspath = os.path.join(report_path, "result"+now+".html")
- fp = open(report_abspath, "wb")
- runner = HTMLTestRunner(stream=fp,
- title=u'自动化测试报告,测试结果如下:',
- description=u'用例执行情况:')
- # 调用函数返回值
- runner.run(discover)
- fp.close()
- new_report = new_report(test_report)
- send_mail(new_report) # 发送测试报告
复制代码
|
|