인터페이스 자동화 테스트 - Python이 자동으로 테스트 보고서 메일 캡슐화를 보냅니다(세부 정보).


머리말

Simple Mail Transfer Protocol이라고도 하는 SMTP(Simple Mail Transfer Protocol)는 안정적이고 효율적인 이메일 전송을 제공하는 프로토콜입니다.

파이썬의 smtplib 모듈은 이메일을 보내는 매우 편리한 방법을 제공하며, 이는 단순히 smtp 프로토콜을 캡슐화합니다.

파이썬은 이메일을 보내기 위해 주로 smtplib와 email의 두 가지 모듈이 필요하며, 이 두 모듈은 파이썬의 내장 라이브러리이며 이를 가져와서 사용할 수 있습니다. smtplib는 메일 발송, 즉 메일박스 서버에 접속, 메일박스에 로그인, 메일 발송 등 메일을 보내는 행위를 주로 담당한다.

이메일은 주로 발신자, 수신자, 제목, 본문, 첨부 파일 등과 같이 이메일 페이지에 표시되는 일부 구조를 나타내는 이메일 구성을 담당합니다.

smtp 승인

위에서 이메일 발송은 smtp 서비스를 기반으로 하므로 smtp 서버에 로그인할 수 있는 계정과 인증코드가 필요하다고 언급했는데 여기서는 qq 메일박스를 예로 들어보겠습니다. qq 메일박스에 로그인 후, 설정 > 계정에서 smtp를 활성화한 다음 문자 메시지를 보내 인증 코드를 받을 수 있습니다.

D1

이메일을 보내

관련된 일부 매개변수에 대한 설명:
smtp 서버에 연결: smtplib.SMTP_SSL(smtp 서버 주소, 포트 번호)
smtp 서버에 로그인: smtp.login(smtp 이메일 주소, smtp에 로그인하기 위한 인증 코드)
메일 객체 구성 : MIMEMultipart()
메일 콘텐츠 생성 : MIMEText(email content, "plain", "utf8") 두 개의 매개변수 텍스트 유형, 인코딩 형식, 이메일 콘텐츠를 html 형식으로 보내려면 일반(기본값)을 html로 바꿉니다.

이메일에 관련 콘텐츠 추가: smg.attach(특정 콘텐츠), 이메일 콘텐츠 추가 이메일
제목 설정: smg[“제목”] = 제목 콘텐츠
이메일 발신자 설정: smg[“보낸 사람”] = 이메일 주소
이메일 수신자 설정 보낸 사람: smg[ "To"] = 이메일 주소

메일 보내기: smtp.send_message(메일 객체, from_addr=발신자 메일 주소, to_addrs=수신자 메일 주소) 수신자가 여러 명일 경우 목록 형식을 사용하여 to_addrs를 전달하여 첨부 파일 생성: MIMEApplication(첨부 내용) 사진 생성:
MIMEImage
( 이미지 내용), 첨부파일과 동일

첨부 파일이나 사진 등 설정: file_msg.add_header(_name, _value, **_params): 확장 헤더 설정, _name은 추가할 헤더 필드, _value는 헤더 값.

msg.add_header('Content-ID', 'imgid') #设置图片ID
msg.add_header('Content-Disposition', 'attachment', filename='test.xlsx')#为附件添加一个标题
msg.add_header('Content-Disposition', 'attachment', filename=('utf-8', '', '中文标题')) #添加非ASCII字符时需指定编码
import smtplib
from email.mime.text import MIMEText    # 创建文本内容的邮件内容
from email.mime.multipart import MIMEMultipart  # 创建带附件的实例
from email.mime.application import MIMEApplication  # 用于创建附件的
from email.mime.image import MIMEImage   # 用于创建图片,与添加附件一样的,下面不做举例


# 第一步: 连接到smtp服务器
smtp = smtplib.SMTP_SSL("smtp.qq.com", 465)
smtp.login("[email protected]","afajccbab")

# 第二步:构建邮件
smg = MIMEMultipart()
text_smg = MIMEText("这是邮件文本内容", "plain", "utf8")	# 邮件内容
smg.attach(text_smg)	# 添加到邮件

# 添加附件
file_msg = MIMEApplication(open(r"C:\project\test\reports\report.html","rb").read())
file_msg.add_header('content-disposition', 'attachment', filename='report.html')
smg.attach(file_msg)	# 添加到邮件

smg["Subject"] = "测试测试"	# 主题
smg["From"] = "[email protected]" # 邮件内显示的发件人
smg["To"] = "[email protected]" # 邮件内显示的收件人

# 第三步发送邮件
smtp.send_message(smg, from_addr="[email protected]", to_addrs="[email protected]")

더 많은 사용법이 있으며 관심있는 사람들은 더 공부할 수 있습니다.

포장 및 적용

다음은 간단한 캡슐화 예이며 필요에 따라 최적화할 수 있습니다. 이메일 제목, 보낸 사람, 받는 사람 및 smtp 로그인 사서함 인증 암호를 추출하여 유지 관리를 위해 구성 파일에 넣을 수도 있습니다.

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication


def send_email(file_path):

    smtp = smtplib.SMTP_SSL("smtp.qq.com",465)
    smtp.login("[email protected]","smtp登录密码")

    smg = MIMEMultipart()
    text_smg = MIMEText("这是邮件文本内容", "plain", "utf8")
    smg.attach(text_smg)

    file_msg = MIMEApplication(open(file_path,"rb").read())
    file_msg.add_header('content-disposition', 'attachment', filename='report.html')
    smg.attach(file_msg)
    
    smg["Subject"] = "测试报告"
    smg["From"] = "[email protected]"
    smg["To"] = "[email protected]"
    smtp.send_message(smg,from_addr="[email protected]",to_addrs="[email protected]")

테스트 사례가 실행된 후에 테스트 보고서가 생성되므로 테스트 보고서가 생성된 후 이메일 전송 단계를 입력할 수 있습니다.

import unittest
import os
from common.contants import CASE_DIR, REPORT_DIR
from common.send_email import send_email

# 第一步:创建测试套件
suite = unittest.TestSuite()

# 第二步加载用例到套件
loader = unittest.TestLoader()
suite.addTest(loader.discover(CASE_DIR))

report_path = os.path.join(REPORT_DIR, "report.html")
with open(report_path, "wb") as f:
    runner = HTMLTestRunner(stream=f,
                            title="24期的测试报告",
                            description="测试报告的描述信息。。。。。",
                            tester="MuSen"
                            )
    # 运行测试套件
    runner.run(suite)

# 执行完代码之后,发送报告
send_email(report_path)
다음은 내가 컴파일한 2023년에 가장 완벽한 소프트웨어 테스트 엔지니어 학습 지식 아키텍처 시스템 다이어그램입니다.

1. Python 프로그래밍 입문부터 숙달까지

사진 설명을 추가해주세요

2. 인터페이스 자동화 프로젝트 실전

사진 설명을 추가해주세요

3. 웹 자동화 프로젝트의 실전

사진 설명을 추가해주세요

4. 앱 자동화 프로젝트의 실전

사진 설명을 추가해주세요

5. 1차 제조사 이력서

사진 설명을 추가해주세요

6. DevOps 시스템 테스트 및 개발

사진 설명을 추가해주세요

7. 일반적으로 사용되는 자동화 테스트 도구

사진 설명을 추가해주세요

여덟, JMeter 성능 테스트

사진 설명을 추가해주세요

9. 요약(마지막에 약간의 놀라움)

투쟁은 마음의 선율이고 근면은 연주되는 움직임입니다. 앞길이 아무리 험난해도 열정과 끈기를 유지하는 한 모든 투쟁은 성장의 궁전입니다. 자신의 힘을 믿고 대담하게 추격해야만 운명의 한계를 극복하고 인생의 영광을 열 수 있습니다!

투쟁은 인생의 여정이며 노력은 앞으로 나아가는 원동력입니다. 어려움과 좌절이 앞을 가로막을 때 우리는 신념을 고수하고 용감하게 싸워야만 우리 자신을 능가하고 이상의 날개를 실현할 수 있습니다. 포기하지마, 멈추지마.

투쟁의 길에서 어려움과 도전은 성장의 사다리이기 때문에 두려워할 필요가 없습니다. 자신의 능력을 믿고 용감하게 나아가 꿈의 꽃에 땀을 흘리십시오. 계속 싸우다 보면 결국 자신만의 찬란한 삶을 창조하게 될 것입니다!

추천

출처blog.csdn.net/csdnchengxi/article/details/131961319