python 자동 전송 테스트 보고서 메 일 기능 구현

자동화 메 일 발송 기능 도 자동화 테스트 프로젝트 의 중요 한 수요 중의 하나 이다.자동화 스 크 립 트 가 실 행 된 후에 메 일 은 최신 테스트 보고 결 과 를 받 을 수 있 습 니 다.이런 주동 적 이 고 신속 하지 않 은 보 기 를 수 동적 이 고 신속하게 받 아들 이면 훨씬 편리 합 니 다.
우선 우 리 는 자동화 테스트 성 과 를 보 여 주 는 아름 답 고 통속 적 인 테스트 보고서 가 필요 하 다.
다운로드 주소:http://tungwaiyip.info/software/HTMLTestRunner.html
이 확장 자 는 매우 간단 합 니 다.하나의.py 파일 만 있 습 니 다.선택 하면 바로 로 컬 로 다운로드 하면 됩 니 다.설치 방법 도 간단 합 니 다.python 의 설치 디 렉 터 리 에 복사 하면 됩 니 다.
windows:다운로드 한 파일 을.../python 35/Lib 디 렉 터 리 에 저장 합 니 다.
Linux(ubuntu):루트 로 HTML TestRunner.py 를/usr/local/python 3.7/dist-packages/디 렉 터 리 에 복사 합 니 다.
HTML TestRunner 수정

#  94  
import StringIo
   :
import io

#  539  
self.outputBuffer=StringIO.StringIO()
   :
self.outputBuffer=io.StringIO()

#  631  
print >>sys.stderr, 'nTime Elapsed: %s' % (self.stopTime-self.startTime)
   :
print(sys.stderr, 'nTime Elapsed: %s' % (self.stopTime-self.startTime))

#  642  
if not rmap.has_key(cls):
   :
if not cls in rmap:

#  766  
uo=o.decode('latin-1')
   :
uo=o

#  772  
ue=e.decode('latin-1')
   :
ue=e
HTML 테스트 보고서 생 성

from selenium import webdriver
import unittest
from HTMLTestRunner import HTMLTestRunner
class Baidu(unittest.TestCase):
 def setUp(self):
  self.driver=webdriver.Firefox()
  self.driver.implicitly_wait(10)
  self.base_url="https://www.baidu.com"
 
 def test_baidu_search(self):
  driver=self.driver
  driver.get(self.base_url)
  driver.find_element_by_id("kw").send_keys("HTMLTestRunner")
  driver.find_element_by_id("su").click()
 def tearDown(self):
  self.driver.quit()
if __name__=="__main__":
 testunit=unittest.TestSuite()
 testunit.addTest(Baidu("test_baidu_search"))
 #        
 fp=open('./result.html','wb')
 #      
 runner=HTMLTestRunner(
  stream=fp,
  title='        ',
  description='      :'
 )
 runner.run(testunit) #       
 fp.close() #       
코드 분석
우선,HTML TestRunner 모듈 을 import 로 가 져 옵 니 다.
그 다음 에 open()방법 을 통 해 현재 디 렉 터 리 에 있 는 result.html 를 바 이 너 리 쓰기 모드 로 열 고 없 으 면 자동 으로 이 파일 을 만 듭 니 다.
이 어 HTML TestRunner 모듈 에 있 는 HTML TestRunner 클래스 를 호출 합 니 다.stream 은 테스트 보고서 파일 을 지정 합 니 다.title 은 테스트 보고서 의 제목 을 정의 하 는 데 사 용 됩 니 다.description 은 테스트 보고서 의 부 제 를 정의 하 는 데 사 용 됩 니 다.
마지막 으로 HTML TestRunner 의 run()방법 을 통 해 테스트 세트 에서 조립 한 테스트 용례 를 실행 합 니 다.마지막 으로 close()를 통 해 테스트 보고서 파일 을 닫 습 니 다.

자동 메 일 발송

import smtplib
from email.mime.text import MIMEText
from email.header import Header
#       
smtpserver='smtp.**.com'
#      /  
user='********@**.com'
password='********'(   )
#    
sender='********@**.com'
#    
receiver='*******@**.com'
#      
subject='python email'
#  html       
msg=MIMEText('<HTML><H1>  </H1></HTML>','html','utf8')
msg['Subject']=Header(subject,'utf-8')
#      
smtp=smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(user,password)
smtp.sendmail(sender,receiver,msg.as_string())
smtp.quit()
첨부 된 메 일 을 보내다

import smtplib
from email.mime.text import MIMEText
from email.header import Header
#       
smtpserver='smtp.**.com'
#      /  
user='********@**.com'
password='********'(   )
#    
sender='********@**.com'
#    
receiver='*******@**.com'
#      
subject='python email'
#     
sendfile=open('D:\\test.txt','rb').read()
att=MIMEText(sendfile,'base64','utf-8')
att["Content-Type"]='application/octet-stram'
att["content-Disposition"]='attachment;filename="test.txt"'
msgRoot=MIMEMultipart('related')
msgRoot['Subject']=subject
msgRoot.attach(att)
#      
smtp=smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(user,password)
smtp.sendmail(sender,receiver,msg.as_string())
smtp.quit()
자동 메 일 발송 기능 통합
앞의 문 제 를 해결 한 후 이 제 는 자동 메 일 발송 기능 을 자동화 테스트 항목 에 통합 할 수 있다.

import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.text import MIMEText
import unittest
import time
import os
#      
def send_mail(file_new):
 f=open(file_new,'rb')
 mail_body=f.read()
 f.close()
 msg=MIMEText(mail_body,'html','utf-8')
 msg['Subject']=Header("       ",'utf-8')
 smtp=smtplib.SMTP()
 smtp.connect("******.com")
 smtp.login(****@**.com,*******)
 smtp.sendmail(****@**.com,****@**.com,msg.as_string())
 smtp.quit()
 print('email has send out !')
#        ,             
def new_report(testreport):
 lists=os.listdir(testreport)
 lists.sort(key=lambda fn: os.path.getmtime(testreport+"\\"+fn))
 file_new=os.path.join(testreport,lists[-1])
 print(file_new)
 return file_now
if __name__=='__main__':
 test_dir='D:\\testpro\\test_case'
 test_report='D:\\testpro\\report'
 discover=unittest.defaultTestLoader.discover(test_dir,pattern='test_*.py')
 now=time.strftime("%Y-%M-%D_%H_%M_%S")
 filename=test_report+'\\'+now+'result.html'
 fp=open(filename,'wb')
 runner=HTMLTestRunner(stream=fp,title='    ',description='      :')
 runner.run(discover)
 fp.close()
 new_report=new_report(test_report)
 send_mail(new_report)
전체 프로그램의 실행 과정 은 세 단계 로 나 눌 수 있다.
  • 유닛 테스트 프레임 워 크 의 discover()를 통 해 일치 하 는 테스트 사례 를 찾 습 니 다.HTML TestRunner 의 run()방법 으로 테스트 용례 를 실행 하고 최신 테스트 보고 서 를 생 성 합 니 다
  • new 호출report()함수 가 테스트 보고서 디 렉 터 리(report)에서 최신 으로 생 성 된 테스트 보고 서 를 찾 아 테스트 보고서 의 경 로 를 되 돌려 줍 니 다
  • 최신 테스트 보고서 의 전체 경 로 를 send 에 전달 합 니 다.mail()함수,메 일 발송 기능 실현..
  • 이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기