目次: はじめに
序文
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()}
次に、ユースケースを実行すると、次の結果が得られます。
上記のユースケースの実行を見ると、合計 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)}
省略部分内容
この時点で、ユースケースを再度実行すると、次の結果が得られます。
前の結果を比較すると、テスト内の 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() に渡して、ユースケースを実行します。
上記の結果は、sign パラメータが見つからないことを示しています。これは、teardown_hooks は最終データが返される前に処理され、抽出操作はデータが返された後に処理されるためです。
以下は、私がまとめた 2023 年の最も包括的なソフトウェア テスト エンジニア学習ナレッジ アーキテクチャ システム図です。 |
1. Python プログラミングの入門から習熟まで
2. インターフェース自動化プロジェクトの実践
3. Web自動化プロジェクトの実戦
4. アプリ自動化プロジェクトの実践
5. 一流メーカーの履歴書
6. DevOps システムのテストと開発
7. 一般的に使用される自動テストツール
8. JMeter パフォーマンス テスト
9. まとめ(最後にちょっとしたサプライズ)
情熱を燃やし、障害を乗り越え、夢を追い求めるために奮闘しましょう。困難を恐れず、粘り強く努力し、素晴らしい絵を描きましょう。自分の価値を信じて船出せよ あらゆる葛藤が成長の原動力 勇気さえあれば、きっと輝く人生は自分で切り開く。
地に足をつけて夢を追い、闘いを通じて人生の香りを刈り取りましょう。挑戦を受け入れ、自分を超え、勇敢に輝かしい章を書きましょう。自分の能力を信じ、情熱を燃やし、汗と努力で道を照らし、輝かしい未来を掴み取ってください。
障害を克服し、卓越性を追求し、苦労することは自己達成の旅です。勇敢に前進し、粘り強く、汗を流して輝かしい舞台を創り上げてください。無限の可能性を信じて信念を持ちましょう。