吐血の仕上げ、インターフェイスの自動化テスト - インターフェイスの依存関係/アップロード インターフェイスの処理 (プロジェクト インスタンス)


序文

2 つの一般的なインターフェイス依存関係の処理方法

1. リクエストボディのフィールドは
状況に応じて異なりますが、ほとんどの場合は現在テストされているインターフェイスにあり、継続して使用するには、その前のインターフェイスのリクエストボディのフィールドを現在のインターフェイスのリクエストボディで使用する必要があります。

たとえば、ユーザー情報を変更するためのインターフェイスは、ユーザー作成時にリクエストボディで渡されるユーザー名のフィールドを使用します。ユーザー作成用のインターフェイスのリクエストボディをパラメータ化して、ユーザー名を動的に生成できるようにします。 。

ユーザー情報を変更するインターフェースが実行されるたびに変更されるため、以前のインターフェースのパラメーター化をそのまま使用すると、必然的に 2 つのユーザー名が異なってしまい、インターフェースの実行に失敗します。したがって、このタイプのインターフェイスでインターフェイスの依存関係処理を実行するには

B1

インターフェイスの依存関係をテスト クラスのコードで直接処理します。

if case["check_info"] == 'user_info':
	user_name = json.loads(new_data)['name']
	case_logger.info("{:-^50s}".format(f"user_name:{
      
      user_name}"))
	setattr(do_re, 'user_name', user_name)

2. レスポンスボディフィールドの依存関係 インターフェースの
依存関係では、レスポンスボディフィールドを次のインターフェースで使用する方法が未だによく使われており、前のインターフェースがget型のクエリインターフェースである場合が多く、インターフェースのレスポンスボディから取得します。対応するフィールドを取得し、次のインターフェイスのリクエスト本文で使用するために取得します。

B2

インターフェイスの依存関係をテスト クラスのコードで直接処理します。

if case["check_info"] == 'get_op_svc_servicestage_domainId':
	op_svc_servicestage_domainId = res.json()['user']['domain']['id']
	case_logger.info("{:-^50s}".format(f"op_svc_servicestage_domainId:{
      
      op_svc_servicestage_domainId}"))
	setattr(do_re, 'op_svc_servicestage_domainId', op_svc_servicestage_domainId)

ファイルをアップロードする必要があるタイプインターフェイスを処理します。

1. インターフェイス分析
ここでは、フロントエンドに直接アップロードし、Chrome ブラウザの F12 開発ツールを介してパッケージをキャプチャすると、アップロード ファイル インターフェイスのリクエストと対応する情報が表示されます。これは会社のプロジェクト インターフェイスであるため、いくつかのモザイク処理を行います。

B3

リクエストパラメータをもう一度見てください。

B4

リクエストから、リクエスト メソッドが multipart/form-data フォーム形式であることがわかり、ファイルはアップロードされていますが、リクエスト パラメータにファイル パスとファイル名が表示されておらず、fileList の値が「binary」であることがわかります。 , すると、アップロードされたファイルのバイト内容を知ることができます

2. Postman の例
postman を例として、本文に form-data オプションを選択し、キーに fileList[] を入力して形式をファイルとして選択し、値にアップロードするローカル ファイルを選択して、リクエストを開始します。

B5

3. リクエストの例
ツールを使用してファイルをアップロードするリクエストを実装しました。postman はリクエストを Python コード形式に変換できます。

具体的な手順は次のとおりです:
まず、postman を使用してパラメータを構築し、正常にデバッグします。
保存ボタンの下にあるコードをクリックします。

B6

言語を Python - リクエストとして選択した後、コードをコピーします。

B7

コピーしたコードをPycharmまたはVSコードの開発ツールに貼り付けて実行します

import os
import requests

from Commons.constants import UPLOAD_DIR

url = "https://接口地址/1.0/product/style-gallery"

payload = {
    
    }
files = [
    ('fileList[]', open(os.path.join(UPLOAD_DIR, 'stylegallery.png'), 'rb'))
]
headers = {
    
    }

response = requests.request("POST", url, headers=headers, data=payload, files=files)

print(response.text.encode('utf8'))

これまでのところ、ファイル アップロード インターフェイスの処理は完了しており、二次開発のためにこれに基づいて後続のテストやインターフェイスの自動化を実行できます。

4. 解決策 2
上記の方法で問題が解決しない場合は、2 番目の方法を使用してください。基本的には問題ありません。

ファイルをアップロードするためのリクエストの内容を見てみましょう。

B9

次に、次のテンプレートをリクエスト ライブラリのリクエスト パラメータ ファイルの値に適用します。

files = {
    
    
            '${name}': ('${filename}', open( '${filepath}', 'rb'), '${Content-Type}')
        }

${name}: 名前「fileList[0]」の値
${filename}: ファイル名「a.jpg」の値
${filepath}: ファイル名のファイルパス
${Content-Type}: コンテンツタイプ値「image/jpeg」は、
テンプレートに対応する変数を実際の値に置き換え、次のようになります。

files = {
    
    
            'fileList[0]': ('a.jpg', open(os.path.join(UPLOAD_DIR, 'a.jpg'), 'rb'), 'image/jpeg')
        }

注: ファイル パスが正しいかどうかを確認するために、ここでは相対パスを使用し、ファイルを対応するリクエストのメソッドに渡します。

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

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

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

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

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

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

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

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

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

5. 一流メーカーの再開

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

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

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

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

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

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

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

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

風や雨を経験せずにどうやって虹を見ることができますか、どうすれば自分を鍛えずに達人になれるでしょうか。夢を貫き、卓越性を追求すれば、闘争のペースは決して止まることはありません。夜明け前には必ず栄光が待っています。

闘争は刃を研ぐ砥石のようなもの、努力は進むべき道を照らす太陽のようなもの。挑戦を恐れず、卓越性を追求し、たゆまぬ努力を続けてこそ、自分を超え、人生の輝きを開花させ、闘いの旅路で夢を限りなく輝かせることができるのです!

闘いの旅では、失敗を恐れないでください、なぜなら、すべての転落はより強く立ち上がる機会だからです; 成長は繰り返しの試みによって蓄積されるので、完璧を追い求めないでください。勇気と粘り強さがある限り、夢に向かってしっかりと進んでいきます。

おすすめ

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