ネットワーク全体で最も詳細な Python インターフェイス自動化テスト - セッション セッション保持 (実戦での詳細)


序文

インターフェイスのテストの過程で、一部のインターフェイスでリクエストするにはログインする必要があることがよくあります。ログインしないとログインを求めるプロンプトが表示されます。どのように解決すればよいでしょうか?

セッションの永続化はセッションを通じて実行できます。

セッション(セッション)

セッション、セッション。では、セッションとは何でしょうか? 一般的な理解を得るために、次のようにセッションのライフサイクルを見てみましょう。

開始: クライアント (通常はブラウザ) –> 最初のリクエストを送信 –> アプリケーション サーバー、相互に接続を正常に確立、つまりセッションを作成します; セッション内: クライアントはアプリケーション サーバーの他のリソースをリクエストします

end: クライアント側 (通常はブラウザ) を閉じるか、セッションがタイムアウトになり、セッションが終了します。

セッションの保留

セッション保持は一般に、同じセッション内の同じユーザーによって送信された関連リクエストが切断されないようにすることとして理解できます。

たとえば、セッションを使用して Web サイトに正常にログインした場合、セッション オブジェクトを再度使用して Web サイトの他の Web ページをリクエストすると、セッションに保存されている Cookie などのパラメータがデフォルトでリクエストに使用されます。再度ログインする必要があります。

セッションのセッション維持の一般原則は次のとおりです。
クライアント アプリケーションが初めてアプリケーション サーバーを要求すると、サーバーはセッションを作成し、セッション オブジェクトは特定のユーザー セッションに必要な属性と構成情報 (たとえば、ユーザー情報やログイン状況など)をサーバー上に保存します。

セッションを作成すると、セッション ID が与えられます。この ID は set-cookie に配置され、リクエストとともにクライアントに返され、ローカル cookie に保存されます。

その後、クライアントがこのアプリケーション内の他のリソースを要求すると、サーバーは Cookie でセッション ID を受け取り、その ID に従ってメモリ内で以前に作成されたセッション オブジェクトを検索します。それが見つかり、有効期限が切れていない場合は、それを意味します。同じユーザーからのリクエストです。

Python はセッションセッションの永続化を実行します

インターフェース自動化テストでは、場合によっては、セッション保持メカニズムを使用してログイン状態を維持できるため、インターフェースが要求されるたびに最初にログインする必要がなくなります。

次に、Python インターフェイスの自動テストでログイン ステータスを維持するためにセッションを使用する方法を説明するために、TesterHome Web サイトでの個人通知メッセージと個人情報の表示を例に挙げてみましょう。

注:
ここでは、最初にログイン インターフェイスにセッションを構築するようリクエストし、次にそのセッションを使用して他のインターフェイスをリクエストしようとしていますが、それでも最初にログインする必要があるというプロンプトが表示され、Web サイトのこの方法が機能しないことが示されています。

ログイン後はホームページにジャンプするため、ここではリクエストのホームページインターフェイスを使用してセッションを構築し、そのセッションを使用して他のインターフェイスをリクエストできます。

1. まず、ログイン成功後にホーム ページ インターフェイスを要求するときに、Fiddler がパケットをキャプチャして Cookie を取得します。

B1

2. Cookie を取得し、要求ホームページ インターフェイスを使用してセッション オブジェクトを構築します。

import requests

headers = {
    
    
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36",
    "cookie": '如上面截图所示获取的cookie,即登录成功后跳转时,请求首页接口https://testerhome.com/时的cookie'
}

# 构造一个全局session对象
S = requests.session()

# 使用session对象即S模拟登录成功后请求首页接口,更新S
h_url = "https://testerhome.com/"
h_res = S.get(url=h_url, headers=headers).text

ここで取得するセッションオブジェクトSにはログイン成功後のCookieなどの情報が含まれており、再ログインすることなく他のインターフェースをリクエストする際に利用します。

3. 前の手順で取得したセッション オブジェクトを使用して、個人通知メッセージと個人情報インターフェイスを表示します。

# 使用session对象S请求个人通知消息接口
n_url = "https://testerhome.com/notifications/personal"
n_res = S.get(url=n_url).text
print(n_res)

# 使用session对象S请求个人信息接口
s_url = "https://testerhome.com/setting"
s_res = S.get(url=s_url).text
print(s_res)

個人情報リクエストインターフェイス、実行結果は次のようになります。

B2

4. 完全なコードは次のとおりです。

import requests

headers = {
    
    
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36",
    "cookie": '如上面截图所示获取的cookie,即登录成功后跳转时,请求首页接口https://testerhome.com/时的cookie'
}

# 构造一个全局session对象
S = requests.session()

# 使用session对象即S模拟登录成功后请求首页接口,更新S
h_url = "https://testerhome.com/"
h_res = S.get(url=h_url, headers=headers).text

# 使用session对象S请求个人通知消息接口
n_url = "https://testerhome.com/notifications/personal"
n_res = S.get(url=n_url).text
print(n_res)

# 使用session对象S请求个人信息接口
s_url = "https://testerhome.com/setting"
s_res = S.get(url=s_url).text
print(s_res)

セッションとクッキーは異なるメカニズムです。

同じ点: どちらもユーザーのステータスを記録でき、どちらもサーバーによって生成されます。
違いは、Cookie はローカル クライアントに保存されるのに対し、セッションはサーバーに保存されることです。
この 2 つの間には関連性があります。セッション ID は Cookie に保存されるため、セッションのセッション保持メカニズムは Cookie に依存する必要があります。

以下は、私がまとめた 2023 年の最も完全なソフトウェア テスト エンジニア学習知識アーキテクチャ システム図です。

1. Pythonプログラミングの入門から習得まで

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

2.インターフェース自動化プロジェクトの実戦

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

3. Web自動化プロジェクトの実戦

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

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

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

5. 一流メーカーの再開

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

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

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

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

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

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

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

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

あらゆる貢献が未来の光となり、果敢に夢を追いかけ、挑戦し、粘り強く頑張ってください。たとえ道が長くても、信念を貫き、諦めず、進み続けてください。自分の力を信じれば、やがて素晴らしい結果が得られるでしょう。

どのような出発点であっても、夢を持ち、努力し、忍耐し、追い求めれば、必ず自分を超え、輝き、輝かしい人生を手に入れることができます。自分を信じて、勇敢に進みなさい、勝利は全力で戦う者に与えられます。

夢を追う途中には困難や挫折は避けられませんが、確固たる信念を持って勇敢に前進し、努力すれば、必ず成功の喜びを得ることができます。あらゆる闘争は革命であり、あなたの人生の壮大な運動を構成します。

おすすめ

転載: blog.csdn.net/m0_70102063/article/details/132259660