51Testing软件测试论坛

标题: 求助,怎么把这个测试报告以附件的形式发送邮件到邮箱? [打印本页]

作者: 测试积点老人    时间: 2019-10-24 10:22
标题: 求助,怎么把这个测试报告以附件的形式发送邮件到邮箱?
我现在只做到了把测试报告以文件的形式发送到邮箱,请问怎么把这个测试报告以附件的形式发送邮件到邮箱?
以下为源代码:
  1. # coding=utf-8
  2. from selenium import webdriver
  3. import time, unittest, os
  4. import HTMLTestRunner
  5. import smtplib
  6. from email.mime.text import MIMEText
  7. from email.header import Header


  8. class h5(unittest.TestCase):

  9.     def openweb1(b):
  10.         b = webdriver.Chrome()
  11.         time.sleep(2)
  12.         b.get('https://192.168.180.150/meeting/login')
  13.         b.maximize_window()
  14.         b.find_element_by_xpath('//*[@id="right"]/div[1]/input').send_keys('test001')
  15.         b.find_element_by_xpath('//*[@id="right"]/div[2]/input').send_keys('0003000')
  16.         b.find_element_by_xpath('//*[@id="right"]/div[3]/div').click()
  17.         time.sleep(2)
  18.         now_url = b.current_url

  19.         if now_url == "https://192.168.180.150/meeting/meetingToStart":
  20.             print("登录成功")
  21.         else:
  22.             raise error("登录失败")
  23.         b.quit()
  24.         
  25.     def openweb(b):
  26.         b = webdriver.Chrome()
  27.         time.sleep(2)
  28.         b.get('https://192.168.180.150/meeting/login')
  29.         b.maximize_window()
  30.         b.find_element_by_xpath('//*[@id="right"]/div[1]/input').send_keys('test001')
  31.         b.find_element_by_xpath('//*[@id="right"]/div[2]/input').send_keys('000000')
  32.         b.find_element_by_xpath('//*[@id="right"]/div[3]/div').click()
  33.         time.sleep(2)
  34.         now_url = b.current_url

  35.         if now_url == "https://192.168.180.150/meeting/meetingToStart":
  36.             print("登录成功")
  37.         else:
  38.             raise error("登录失败")
  39.         b.quit()

  40. def sendmail(file_new):
  41.     # 发信邮箱
  42.     mail_from = 'xxx@qq.com'
  43.     mail_to = ['xxx@qq.com']  # 收件箱
  44.     # 定义正文
  45.     f = open(file_new, 'rb')
  46.     mail_body = f.read()
  47.     f.close()
  48.     msg = MIMEText(mail_body, _subtype='html', _charset='utf-8')
  49.     # 定义标题
  50.     msg['Subject'] = u"自动化测试报告"
  51.     # 定义发送时间(不定义的可能有的邮件客户端会不显示发送时间)
  52.     msg['from'] = Header("xxx@qq.com", 'utf-8')
  53.     msg['date'] = time.strftime('%a, %d %b %Y %H:%M:%S %z')
  54.     smtp = smtplib.SMTP()
  55.     # 连接 SMTP 服务器,此处用的 qq 的 SMTP 服务器
  56.     smtp.connect('smtp.qq.com')
  57.     # 用户名密码
  58.     smtp.login('xxx@qq.com', 'fhqilugaqvilbcbi')
  59.     smtp.sendmail(mail_from, mail_to, msg.as_string())
  60.     smtp.quit()
  61.     print('email has send out')

  62. def send_report(testreport):
  63.         result_dir = testreport
  64.         lists = os.listdir(result_dir)
  65.         lists.sort(key=lambda fn: os.path.getmtime(result_dir + "\\" + fn))
  66.         # print (u'最新测试生成的报告: '+lists[-1])
  67.         # 找到最新生成的文件
  68.         file_new = os.path.join(result_dir, lists[-1])
  69.         print(file_new)
  70.         # 调用发邮件模块
  71.         sendmail(file_new)

  72. testunit = unittest.TestSuite()

  73. testunit.addTest(h5("openweb"))
  74. testunit.addTest(h5("openweb1"))

  75. now = time.strftime("%Y-%m-%d-%H-%M-%S")

  76. # 定义报告存放路径,支持相对路径
  77. filePath = 'D://testcase//'
  78. filename = filePath + now + "result.html"
  79. fp = open(filename, 'wb')

  80. # 定义测试报告
  81. runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u'测试报告', description=u'用例执行情况:')
  82. # 运行测试用例
  83. runner.run(testunit)
  84. fp.close()
  85. send_report(filePath)
  86. 下图为执行结果和邮件
复制代码
[attach]127006[/attach]

作者: bellas    时间: 2019-10-25 09:24
可以写一段代码,抄送给上你想要发送的邮箱
作者: jingzizx    时间: 2019-10-25 10:38
可以的,
作者: qqq911    时间: 2019-10-25 10:45
可以加上个模块




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2