インターフェイスの自動テスト - Python がテスト レポートのメール カプセル化を自動的に送信します (詳細)


序文

SMTP (Simple Mail Transfer Protocol) は、Simple Mail Transfer Protocol とも呼ばれ、信頼性が高く効率的な電子メール送信を提供するプロトコルです。

Python の smtplib モジュールは、smtp プロトコルをカプセル化するだけで、電子メールを送信するための非常に便利な方法を提供します。

Python でメールを送信するには主に smtplib と email の 2 つのモジュールが必要ですが、この 2 つのモジュールは Python の組み込みライブラリであり、インポートすることで使用できます。smtplib は主にメールの送信、つまりメールボックス サーバーへの接続、メールボックスへのログイン、メールの送信などのメール送信アクションを担当します。

電子メールは主に電子メールの構築を担当します。電子メールとは、送信者、受信者、件名、本文、添付ファイルなど、電子メール ページに表示されるいくつかの構造を指します。

SMTP認証

メールの送信は smtp サービスに基づいていると前述しました。そのため、smtp サーバーにログインできるアカウントと認証コードが必要です。ここでは、qq メールボックスを例に説明します。qq メールボックスにログインした後、 [設定] > [アカウント] で SMTP を有効にし、テキスト メッセージを送信して認証コードを取得します。

D1

メールを送る

関連するパラメーターの説明:
smtp サーバーへの接続: smtplib.SMTP_SSL (smtp サーバーのアドレス、ポート番号)
smtp サーバーへのログイン: smtp.login (smtp 電子メール アドレス、smtp にログインするための認証コード)
メール オブジェクトの構築: MIMEMultipart()
メールコンテンツの作成 : MIMEText(email content, "plain", "utf8") 2 つのパラメータ テキストタイプ、エンコード形式; 電子メールコンテンツを html 形式で送信したい場合は、plain (デフォルト) を html に置き換えます

関連するコンテンツを電子メールに追加します: smg.attach (特定のコンテンツ)、電子メールのコンテンツを追加します。 電子メールの件名を設定します。
smg[“Subject”] = 件名の内容
電子メールの送信者を設定します。 smg[“From”] = 電子メール アドレス
電子メールの受信者を設定します。 From: smg[ 「宛先」] = メールアドレス

メール送信: 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. Web自動化プロジェクトの実戦

画像の説明を追加してください

4. アプリ自動化プロジェクトの実戦

画像の説明を追加してください

5. 一流メーカーの再開

画像の説明を追加してください

6. DevOps システムのテストと開発

画像の説明を追加してください

7. 一般的に使用される自動テストツール

画像の説明を追加してください

8、JMeterのパフォーマンステスト

画像の説明を追加してください

9. まとめ(最後にちょっとしたサプライズ)

闘争は心のメロディーであり、努力は奏でられる運動です。前途がどれほど困難であっても、情熱と忍耐力を維持する限り、すべての闘いは成長の宮殿です。自分の力を信じて果敢に追いかけてこそ、運命の限界を乗り越え、人生の栄光を切り開くことができる!

闘争は人生の旅であり、勤勉は前に進むための原動力です。困難や挫折が道を阻むとき、私たちは自分の信念を貫き、勇敢に戦い、その闘いを通じて初めて自分を超え、理想の翼を実現することができます。諦めないで、止めないでください。

闘いの道では、困難や挑戦を恐れる必要はありません。それは成長のはしごだからです。自分の可能性を信じて勇敢に前進し、汗を流して夢の花に水をやりましょう。戦い続ければ、いつかは自分だけの輝かしい人生を切り開くことができる!

おすすめ

転載: blog.csdn.net/csdnchengxi/article/details/131961319