Python自動テストのご依頼について詳しく解説

1.Pythonリクエスト

リクエストを解析する主なメソッドは、Python で実装された最もシンプルで使いやすい HTTP ライブラリです。リクエスト ライブラリには 7 つの主要なメソッドがあります。

 例: 通常のインターフェイス テストのインターフェイス間には相関関係がないため、変数を直接定義して get リクエストと post リクエストを開始できます。

このうち、POST リクエストは一般的に json と formdata に分けられ、2 つのメソッドのパラメータはスクリーンショットのとおりで、認証が必要な場合は auth パッケージをインポートし、続いてリクエスト メソッドをインポートする必要があります。

1.url: リクエストアドレス

2.data: リクエストの内容としての辞書、バイト列、またはファイルオブジェクト

3.json: リクエストの内容としての JSON 形式のデータ

4.headers: 辞書、HTTP カスタム ヘッダー

5.Cookie: CooKiJarの辞書またはCookie、リクエスト

6.auth: Yuanzu、HTTP 認証機能をサポート

7.ファイル:辞書タイプ、転送ファイル

8.timeout: タイムアウト時間を秒単位で設定します。

9.proxies: 辞書タイプ、アクセスプロキシサーバーを設定、ログイン認証を追加できます

10.allow_redirects: True/False、デフォルトは True、リダイレクト スイッチ

11.stream: True/False、デフォルトは True、コンテンツを取得してスイッチをすぐにダウンロードします

12.verity: True/False デフォルト True、認証 ssl 証明書スイッチ

13.cert: ローカルSSL証明書パス

レスポンスの戻りメソッドの詳細な説明:

1.response.status_code #返された http レスポンスのステータス コード

2.response.content #バイナリデータであるバイト型を返します

3.response.headers #返された http リクエスト ヘッダー

4.response.json() # 応答で Json データを返します

5.response.url # 戻りURL

6.response.encoding #レスポンスのエンコード形式を返す

7.response.cookies # 応答で Cookie を返します

8.response.text #Unicode データを返します。 - -文章

セッションの詳細説明:

  前のリクエストからトークンを取得し、それを次のインターフェースリクエストの送信用パラメータとして使用するなど、フロントインターフェースとリアインターフェースへの依存関係が必要なインターフェーステストの場合、上記の方法は明らかに不適切です。定義する必要があり、依存関係に基づいて対応するリクエストパラメータに追加するために、次のメソッドはセッションメソッドを使用します。前後に実行されます。一度追加すれば、すべてで使用できます。リクエスト。(プロジェクトでは Cookie を使用する必要がないため、content-type と User-Agent がここに含まれます)

 

import json
import warnings
import requests, unittest

class TestCase_auto003(unittest.TestCase):
    def setUp(self) -> None:
        # 解决错误 ResourceWarning: Enable tracemalloc to get the object allocation traceback
        warnings.simplefilter('ignore', ResourceWarning)
        self.s = requests.session()
        # dict = json.dumps({"mobile": "18673844852", "pwd": "123456"})
        # header = {"Accept": "*/*", "Accept-Encoding": "gzip, deflate, br", "Content-Type": "application/json",
        #           "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1"}
        # rsp = self.s.post('http://192.168.1.173:28082/register/login/pws', data=dict, headers=header)
        # self.s.headers['Cookies'] = rsp.headers['Cookies']
        self.s.headers['User-Agent'] = "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Mobile Safari/537.36"
        self.s.headers['Content-Type'] = "application/json"

    def testcase_auto001(self):
        dict = json.dumps({"mobile": "18673844852", "pwd": "123456"})
        rsp = self.s.post('http://192.168.1.173:28082/register/login/pws', data=dict)
        print(rsp.text)
        self.assertEqual(200, rsp.status_code, msg='pass')

    def testcase_auto002(self):
        dict = json.dumps({"bid": 96497, "uid": 96497})
        rsp = self.s.post('http://192.168.1.173:28082/versions/dynamic/personal', data=dict)
        print(rsp.text)
        if rsp.status_code == 200:
            print("pass")
        else:
            print("fail")

    def tearDown(self) -> None:
        pass

if __name__ == "__main__":
    unittest.main()

説明: 1. これは cynthia 障害管理システムです。ログイン時に、応答内の cookie を次のリクエストの cookie として取得する必要があります。取得しないとログインできません。2. したがって、unittest 構造では、ログイン操作をセットアップに配置することができ、UI オートメーションと同様に、ログインは初期化に配置されます。3. セットアップでは、リクエストに対するレスポンスの Cookie 値を追加し、ブラウザ UA も追加します。4. パラメータの再利用が可能で、最初から最後まで要求する変数はすべてrsp、ボディ内のパラメータはすべてdictであり、記述が簡単で便利です。

1. 変数 s がリクエストと等しいセッションを定義します。この s のセッションは、後でリクエストを開始するために使用されます。
2. 要求結果を開始するには、s に等しい rsp に等しい変数を定義します。
3. トークン ID をセッション要求のヘッダー ファイルの Cookie に追加する必要があります。追加しないとログインできません。この ID は RSP 応答情報に含まれています。
4. レスポンス情報はjson辞書形式のため、スクリーンショットの形式に合わせてリクエストヘッダーに追加する必要があります。
5. フィールドまたはコンテンツを辞書に追加する必要がある場合は、スクリーンショットの形式に従ってください s.headers['xxx'] = "xxx". 辞書にこのキー: 値がある場合、値の値は次のようになります。直接更新されます。そのようなキーがない場合は、このキー:値を辞書に追加します。

インターフェースの練習 

セッションを使用してヘッダー ファイルにトークンを追加します。会社の実際のプロジェクトでは、インターフェイスを呼び出すときに最初にトークンを取得する必要があります。最初にリクエストを呼び出してトークンを取得する必要があります。次に、トークン値を取得した後、それを後続のインターフェイスのヘッダー ファイル。

self.session.headers.update({"token":rsp.json()['data']['token']})

セットアップの初期化メソッドで Get Token を呼び出すと、トークン値を取得してセッション全体の先頭に追加できるため、後続のリクエストで追加の先頭を追加する必要はありません。

ddt を使用してインターフェイスのテスト ケースをパラメータ化する

ddt データ駆動型テストの場合、最初に ddt を pip リストし、サードパーティ ライブラリをインストールし、ddt からコードの先頭でライブラリにデータをインポートします。 import ddt, data、テスト クラスの前で ddt を宣言し、@ddt を使用します。

1. テストケースの前にデータの使用を宣言します。@data を使用します。

実行結果では、このユースケースが2回実行され、それぞれtest1とtest2が出力されます。

2. ファイルの読み取りデータ使用量:

このメソッドは解凍が必要なので、テストケースの前に @unpack を宣言するだけで unpack メソッドを使用する必要があります。

 説明する

1: ファイルを読み取るメソッドを定義し、リスト配列を定義し、file 関数の open メソッドを使用し、「txt1」という名前のファイルを read 形式で読み取り、エンコード形式は utf-8 で、for ループを使用します。ループ内の各行を読み取り、\n 改行文字で終了し、各パラメーターをカンマで区切って、最後に以下の直接呼び出し用のデータ値を返します。

2: 上記の読み取りメソッドを記述した後、このメソッドをテスト ケースの直前に @data (*readfile ()) の形式で使用し、その後 @unpack 解凍メソッドを使用します。

3. request+unittest+HTMLTestRunner はテスト レポートを生成します

上記の方法でテストケースを記述した後、unittestフレームワークのHTMLTestRunnerを組み合わせてレポートを生成し、インターフェーステストレポートを生成します。

4. まとめ

このチュートリアルはインターフェイス テストにおける小さなテストにすぎません。今後も学ぶべきことはたくさんあります。リクエスト ライブラリはインターフェイス テストだけでなく、クローラなどにも使用できます。テクノロジーへの道は決して終わりません。テスターももっと努力する必要があります。

高度な Python インターフェイス自動化テストのための重要なチュートリアル (2023 年のネットワーク全体について最も詳細なチュートリアル)

おすすめ

転載: blog.csdn.net/dad22211/article/details/131731891