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)
전체 프로그램의 실행 과정 은 세 단계 로 나 눌 수 있다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.