最も強力な組織、HttpRunner インターフェース自動化フレームワーク - フック機構の実践、高速化に関する記事...


序文

Python を Unittest フレームワークと組み合わせて使用​​する自動テストの場合、Unittest には、前操作と後操作である setUp() と TearDown() という 2 つのメソッドがあることを知っておく必要があります。

通常、setUp() は主にテストの準備に使用され、tearDown() は主にテスト後のデータのクリーニングに使用されます。

HttpRunner では、フック メカニズムを通じて setUp() と TearDown() を実装できます。

テストシナリオ

ログイン インターフェイスを使用して説明します。完全な YAML 形式の例は次のとおりです。

- config:
    name: login test
    request:
      base_url: http://api.nnzhp.cn

- test:
    name: login case 1
    request:
      url: /api/user/login
      method: POST
      headers:
        Content-Type: application/x-www-form-urlencoded
        User-Agent: Fiddler
      data:
        username: test1010
        passwd: aA123456
    validate:
      - eq: [status_code, 200]
      - eq: [content.error_code, 0]

- test:
    name: login case 2
    request:
      url: /api/user/login
      method: POST
      headers:
        Content-Type: application/x-www-form-urlencoded
        User-Agent: Fiddler
      data:
        username: test1010
        passwd: aA123456
    validate:
      - eq: [status_code, 200]
      - eq: [content.error_code, 0]

フック関数の定義は、通常 debugtalk.py に記述し、テストケース内で直接フック関数を呼び出すことが多いですが、例えば debugtalk.py 内で以下のような準備をします。

def hook_setup():
    print("开始--------hook_setup")

def hook_teardown():
    print("结束--------hook_teardown")

設定でフックを使用する

HttpRunner でフック メカニズムを使用する場合、キーワード setup_hooks および Teardown_hooks が使用され、現在の YAML/JSON ユース ケースでは 1 回だけ実行されます。

setup_hooks: ユースケース全体が実行を開始する前にフック関数をトリガーします。主に準備作業に使用されます。
Teardown_hooks: フック関数はユースケース全体が実行された後にトリガーされ、主にテスト後のクリーンアップに使用されます。

設定にフックを導入し、次のように変更します。

- config:
    name: login test
    request:
      base_url: http://api.nnzhp.cn
    setup_hooks:
        - ${
    
    hook_setup()}
    teardown_hooks:
        - ${
    
    hook_teardown()}

次に、ユースケースを実行すると、次の結果が得られます。

E1

上記のユースケースの実行を見ると、合計 2 つのユースケースが実行されており、debugtalk.py のhook_setup() とhook_teardown() は 1 回だけ実行されていることがわかります。 YAML の使用例全体です。

テストでフックを使用する

テストでは、キーワード setup_hooks と Teardown_hooks も使用できます。ここでは、そのスコープは現在のテストです。複数のテストがある場合、複数回実行されます。

setup_hooks: HTTP リクエストを送信する前にフック関数を実行し、主に準備作業に使用され、リクエストのリクエスト内容を前処理することもできます。

Teardown_hooks: HTTP リクエストの送信後にフック関数を実行します。主にテスト後のクリーンアップに使用されます。また、暗号化や復号化などの応答を変更することもできます。

debugtalk.py の関数にパラメータを渡す関数を追加し、次のように変更するだけです。

def hook_setup(request=""):
    print("开始--------hook_setup")
    print("request请求:{}".format(request))

def hook_teardown(response=""):
    print("结束--------hook_teardown")
    print("response响应:{}".format(response))

ここでリクエストとレスポンスを出力して処理し、次のように 2 つのテストにそれぞれフックを導入できます。

- config:
    name: login test
    request:
      base_url: http://api.nnzhp.cn

- test:
    name: login case 1
    省略部分内容
    setup_hooks:
        - ${
    
    hook_setup($request)}
    teardown_hooks:
        - ${
    
    hook_teardown($response)}
    省略部分内容

- test:
    name: login case 2
    省略部分内容
    setup_hooks:
        - ${
    
    hook_setup($request)}
    teardown_hooks:
        - ${
    
    hook_teardown($response)}
    省略部分内容

この時点で、ユースケースを再度実行すると、次の結果が得られます。

E2

前の結果を比較すると、テスト内の setup_hooks とteardown_hooks が単一のテスト用であることがわかります。

注意事項

フック機構を使用する際に注意が必要なのは、上記のテストでは最終結果を返す前に実行されるteardown_hooksを使用しているため、レスポンス結果から抽出したデータを引数としてhook_teardownに渡すことはできません。関数。

YAML ユースケースを変更し、2 番目のテストに次の変更を加えるだけです。

- test:
    name: login case 2
    省略部分内容
    extract:
      - sign: content.login_info.sign
    setup_hooks:
        - ${
    
    hook_setup($request)}
    teardown_hooks:
        - ${
    
    hook_teardown($sign)}
    省略部分内容

extract によって返された結果の符号を抽出し、それをhook_teardown() に渡して、ユースケースを実行します。

E3

上記の結果は、sign パラメータが見つからないことを示しています。これは、teardown_hooks は最終データが返される前に処理され、抽出操作はデータが返された後に処理されるためです。

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

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

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

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

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

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

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

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

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

5. 一流メーカーの履歴書

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

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

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

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

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

8. JMeter パフォーマンス テスト

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

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

情熱を燃やし、障害を乗り越え、夢を追い求めるために奮闘しましょう。困難を恐れず、粘り強く努力し、素晴らしい絵を描きましょう。自分の価値を信じて船出せよ あらゆる葛藤が成​​長の原動力 勇気さえあれば、きっと輝く人生は自分で切り開く。

地に足をつけて夢を追い、闘いを通じて人生の香りを刈り取りましょう。挑戦を受け入れ、自分を超え、勇敢に輝かしい章を書きましょう。自分の能力を信じ、情熱を燃やし、汗と努力で道を照らし、輝かしい未来を掴み取ってください。

障害を克服し、卓越性を追求し、苦労することは自己達成の旅です。勇敢に前進し、粘り強く、汗を流して輝かしい舞台を創り上げてください。無限の可能性を信じて信念を持ちましょう。

おすすめ

転載: blog.csdn.net/m0_60054525/article/details/132189600