【HttpRunner】インターフェース自動テストフレームワーク

導入

2018 年の Python 開発者カンファレンスで、YAML/JSON 形式を使用してユース ケースを管理する HttpRuuner オープン ソース自動テスト フレームワークについて学びました。記録および変換してユース ケース関数を生成し、ユース ケースをテスト コードから完全に分離できます。テストシナリオデータの管理はExcelよりも簡潔です。ここでは、空いた時間を利用して、自動インターフェイス テストを実装するためのこのフレームワークを学習してください。

HttpRunner は、HTTP(S) プロトコルの一般的なオープンソース テスト フレームワークです。自動テスト、パフォーマンス テスト、オンライン モニタリングを実現するには、1 つのスクリプトを作成して管理するだけで済みます。 YAML/JSON . 、継続的統合およびその他のテスト要件。

主流のインターフェース自動化ツールのフレームワーク:

上の図からわかるように、テクノロジの選択では、一般的に Requests+Python と HttpRunner が優先されます。Requests+Python については、自動テストの概要カテゴリの記事で説明されています。ここでは、HttpRunner について説明します。

フレームワークプロセス

主な特徴:

リクエストのすべての機能を継承し、HTTP(S) のさまざまなテスト要件を簡単に実装します。
YAML/JSON を使用してテスト シナリオを記述し、テスト ケース記述の均一性と再現性を確保します。保守性
補助関数 (debugtalk.py) の助けを借りて、複雑な動的計算ロジックをテスト スクリプトに簡単に実装できます。
完全なテスト ケース階層化メカニズムをサポートします。テスト ケースの完全な再利用を実現します。
テスト前後の完全なフック メカニズムをサポートします。
応答結果は、豊富な検証メカニズムをサポートします。
HAR に基づいて、インターフェース記録およびユースケース生成機能 (har2case) を実装します。
Locust フレームワークと組み合わせることで、追加作業なしで分散パフォーマンス テストを実装できます。
実行方法CLI 呼び出しを使用し、Jenkins などの継続的統合ツールと完全に統合できます
テスト結果の統計レポートは、詳細な統計情報とログ記録を備えた簡潔かつ明確です。
非常にスケーラブルで、二次開発と Web プラットフォーム化の実装が容易

 環境のインストール:

HttpRunner は、Python に基づいて開発されたテスト フレームワークで、macOS、Linux、および Windows システム プラットフォーム上で実行できます。 HttpRunner は Python 3.4 以降のすべてのバージョンをサポートしており、Python 3.4 以降を使用することをお勧めします。

pipコマンドを使用してインストールします: pip3 install httprunner [私の環境では2つのバージョンのPythonが搭載されているため、ここではpython3.6バージョンを使用するため、pip3コマンドを使用します。python2.7バージョンの場合は、pipコマンドを使用しますインストールする]

インストールが完了したら、次のことを確認します。

バージョン番号が正常に表示されれば、インストールは正常です。

基本機能

  1. ユースケースを記録して生成する

テスト ケースを変換して生成する前に、キャプチャされたデータ パケットを HAR 形式のファイルにエクスポートする必要があります。 Charles パケット キャプチャ ツール プロキシを使用する操作方法は、変換するインターフェイスを選択 (複数またはすべて選択可能) し、右クリックし、フローティング メニュー ディレクトリの [エクスポート...] をクリックし、HTTP アーカイブを選択します。 (.har) を形式として) して保存します。保存するファイル名は test.har であると仮定します。

 テストケースを変換する

コマンド ライン ターミナルで har2case コマンドを実行して、test.har を HttpRunner のテスト ケース ファイルに変換します。 har2case を使用してスクリプトを変換すると、デフォルトで JSON 形式に変換されます

 -2y/--to-yml パラメータを追加し、YAML 形式に変換します

2 つの形式は完全に同等です。YAML 形式はより簡潔で、JSON 形式はより多くのツールをサポートしています。個人の好みに応じて選択できます。

生成されたユースケースを以下に示します。

json形式:

YAML形式:

config: テスト ケース セット全体のグローバル構成アイテムとして使用されます。
test: 単一のテスト ケースに対応します
name この名前テスト< a i=3> リクエスト このテストでは、具体的には次のような http リクエストのさまざまな情報を送信します。 URL リクエスト パス (base_url が設定で定義されている場合、フル パスはBase_url + url) a> メソッド リクエスト メソッド POST、GET など パラメータ値でのデータ パス コンテンツの検証すべての検証内容がテストに合格した場合にのみテストに合格したとみなされ、それ以外の場合は失敗します。




  2. テストを実行する

テスト ケースの実行中に障害が発生したときに、後続のテスト ケースの実行を停止する場合は、コマンドに --failfast を追加できます。例: hrun test.yaml --failfast

リクエスト パラメータやレスポンスの詳細など、より詳細な情報を表示する必要がある場合は、ログ レベルを DEBUG に設定します。つまり、コマンドに --log-level debug を追加します。例: hrun test.yaml --log-level debug

問題の特定を容易にするために、テストの実行時に --save-tests パラメーターを指定して、実行プロセス中の中間データをログ ファイルとして保存できます。

ログ ファイルはプロジェクト ルート ディレクトリの logs フォルダーに保存され、生成されるファイルは次のとおりです (XXX はテスト ケース名)。

XXX.loaded.json: テスト ケースがロードされた後のデータ構造コンテンツ。テスト ケース ファイル (YAML/JSON)、debugtalk.py、.env などを含むすべてのプロジェクト ファイルがロードされます。 Quickstart-6.loaded .json
Quickstart-6.parsed.json
XXX.summary.json: テスト レポートが生成される前のデータ構造の内容。 test-quickstart-6.summary.json として

  3. 試験報告書

デフォルトでは、生成されたテスト レポート ファイルはプロジェクト ルート ディレクトリの reports フォルダーに配置され、ファイル名はテスト開始時のタイムスタンプです。 HttpRunner には、Jinja2 形式のデフォルトのレポート テンプレートが付属しています

テストレポートの形式は次のとおりです。

[概要] には、テストの開始時間、合計実行時間、実行中の Python のバージョンとシステム環境、実行結果の統計など、このテストの全体的な情報がリストされます。

「詳細」では、各テストケースの実行結果が詳細に表示されます。

テストケースに対応するログボタンをクリックすると、リクエストヘッダーとボディ、レスポンスヘッダーとボディ、検証結果、レスポンス、レスポンス時間(経過)など、テストケース実行の詳細データがポップアップボックスに表示されます。およびその他の情報。

デフォルトでは、生成されたテスト レポート ファイルはプロジェクト ルート ディレクトリの reports フォルダに配置されます。レポートを生成するパスを指定する必要がある場合は、 --report-dir パラメータを使用できます。

例: hrun test.yaml --dirreport-name g:\home

データのパラメーター化、ユースケースの階層化、環境変数などのその他の高度な機能については、詳細な紹介については公式中国語マニュアルを参照してください。

  4. プロジェクトを作成する

の使用法は Django と似ており、--startproject を通じて新しいプロジェクトの名前を指定するだけです。例: hrun --startproject httpapidemo

実行後、指定したディレクトリに新しいプロジェクトのディレクトリ構造が生成されるので、テストケースのインターフェース・モジュール・シナリオの階層化原則に従ってユースケース記述情報を追加します。

テスト ケースで説明されているファイル ディレクトリ構造を整理するときは、構成よりも規約の原則に従うことに注意してください。

API インターフェイス定義は、API ディレクトリに配置する必要があります。
モジュール定義は、スイート ディレクトリに配置する必要があります。
テスト シナリオ ファイルは、 testcases ディレクトリ
関連する関数定義は debugtalk.py に配置されます
新しいユースケースのディレクトリ構造の具体例は次のとおりです。

新しいユースケースのディレクトリ構造の具体例は次のとおりです。


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


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


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

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


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

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


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

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


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

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

寿命が長いのでオイルを追加してください。すべての努力は裏切られることはなく、粘り強く続ける限り、いつかは報われます。自分の時間を大切にして夢を追いかけてください。初心を忘れずに邁進してください。あなたの未来はあなたのコントロール次第です!

人生は短く、時間は貴重です。将来何が起こるかを予測することはできませんが、現在をコントロールすることはできます。一日一日を大切に、一生懸命働き、自分自身をより強く、より良くしてください。確固たる信念と粘り強い追求があれば、成功は最終的にあなたのものになります。

常に自分自身に挑戦することによってのみ、常に自分を超えることができます。夢を追い続け、勇敢に前に進んでいくと、その葛藤の過程がとても美しく、やりがいのあるものであることに気づくでしょう。自分を信じてください、あなたならできるよ!

最後に、私の記事を注意深く読んでくださった皆さんに感謝します。互恵性は常に必要です。それほど価値のあるものではありませんが、使用できる場合は、直接受け取ることができます。

この情報は、[ソフトウェア テスト] の友人にとって最も包括的かつ完全な準備倉庫となるはずです。この倉庫は、最も困難な旅を乗り越える何万人ものテスト エンジニアにも同行してきました。また、皆さんのお役に立てれば幸いです。​ 

おすすめ

転載: blog.csdn.net/2301_78276982/article/details/134896162