インターフェースの自動テスト: モックサーバー用の Moco ツール

モックサーバーとは何ですか

モック: 英語は模倣と訳せます。モック サーバーは、依存関係 (結合) を削除し、実装されているように見せるために使用するテクノロジーです。たとえば、フロントエンドはデバッグに特定の API を使用する必要がありますが、サーバーはこれらを開発していませんAPI、次にフロントエンド 作業はサーバーによってブロックされますが、モック サーバーを使用してこれらの API を実装するふりをすることができ、特定のデータを返し、フロントエンドによるページのレンダリングを支援できます。便宜上サーバーと合意を形成します。合意されたインターフェースの内容は何ですか。

安静なインターフェース仕様

Ruan Yifeng のブログに転送 — RESTful API 設計ガイド: http://www.ruanyifeng.com/blog/2014/05/restful_api.html

モココンウリ (1)

moco ツールは、github 上のオープン ソース プロジェクトです。moco ツールを使用して、デバッグを容易にするシンプルなモック サーバーをセットアップできます。github アドレス: https://github.com/dreamhead/moco。ダウンロードされたものは、 jar パッケージ。現在のバージョンは 0.11.1 です。まず、構成ファイルを作成し、「シミュレート」する必要があるリクエストと応答をこの構成ファイルに書き込む必要があります。構成ファイルは json 形式です。次に、 localhost: 12306/hello インターフェイスにアクセスするための比較的単純なリクエストを作成し、プレーン テキストの「moco」を返します。moco ツールはポート 12306 で合意しています。もつれさせる必要はありません。ポート 8080 での Tomcat の合意に似ています。config.jsonファイルは次のとおりで、json ファイルは moco フォルダーと同じ jar パッケージに配置する必要があります。たとえば、ブロガーのディレクトリ構造は次のとおりです。

[
    {
        "request":
        {
            "uri":"/hello"
        },
        "response":
        {
            "text":"moco"
        }
    }
]

設定ファイルは比較的単純で、インターフェイスをリクエストし、プレーン テキストを返し、コマンドを開始します。

>java -jar moco-runner-0.11.1-standalone.jar http -p 12306 -c config.json

ここでの http は http プロトコルで、-p 12306 はポート番号 12306 をバインドし、-c config.json は構成ファイルを読み取ります。
ここに画像の説明を挿入

上記のパフォーマンスを見ると、moco が正常に起動されたことを意味します。localhost:12306/hello にアクセスすると、次の結果が表示されます。これは、模擬サーバーが合意されたデータ「moco」を正常に返したことを意味します。
ここに画像の説明を挿入 

モココンベンションウリ (2)

次のように構成ファイルを変更します。moco ツールは json 構成ファイルの変更をリアルタイムで監視し、サーバーを自動的に再起動できることに注意してください。
ここに画像の説明を挿入

[
    {
        "request":
        {
            "uri":"/"
        },
        "response":
        {
            "text":"welcome to Moco"
        }
    },
    {
        "request":
        {
            "uri":"/hello"
        },
        "response":
        {
            "text":"moco"
        }
    }
]

 次に、localhost:12306 と 12306:12306/hello にそれぞれアクセスすると、結果は次のようになります。
ここに画像の説明を挿入
ここに画像の説明を挿入

Moco 合意取得リクエスト

[
    {
        "request":
        {
            "method":"get",
            "uri":"/get"
        },
        "response":
        {
            "text":"moco get"
        }
    }
]

 Moco 合意投稿リクエスト

[
    {
        "request":
        {
            "method":"post",
            "uri":"/post"
        },
        "response":
        {
            "text":"moco post"
        }
    }
]

Moco コンベンションのリクエストパラメータ

[
    {
        "request":
        {
            "method":"get",
            "uri":"/get",
            "queries":
            {
                "id":"12306",
                "name":"moco"
            }
        },
        "response":
        {
            "text":"moco queries"
        }
    }
]

ここに画像の説明を挿入

Moco 合意のリクエスト本文は JSON 形式である必要があります

[
    {
        "request":
        {
            "method":"post",
            "uri":"/post",
            "text":
            {
                "json":"{\"id\":\"12306\",\"name\":\"moco\"}"
            }
        },
        "response":
        {
            "status":"200"
        }
    }
]

 Moco 合意リクエストヘッダー

[
    {
        "request":
        {
            "method":"post",
            "uri":"/post",
            "headers":
            {
                "content-type":"application/json",
                "Connection":"keep-alive",
                "Content-Encoding":"gzip"
            }
        },
        "response":
        {
            "status":"200"
        }
    }
]

Moco 合意の返信内容

テキストやステータスなどのレスポンスの一元的な返信内容は見てきましたが、返信ファイルや設定ファイルの形式などは以下のようになります。

[
    {
        "request":
        {
            "method":"post",
            "uri":"/post",
        },
        "response":
        {
            "file":"data.js",
            "charset":"GBK",
            "version":"HTTP/1.0"
        }
    }
]

Moco-promise リターン ステータス コード
上記の json を参照してください。これにはすでにリターン ステータス コードの使用法が含まれています

単体テストでの Moco の使用 (Python を例にします)

[
    {
        "request":
        {
            "method":"get",
            "uri":"/api/hello"
        },
        "response":
        {
            "text":"hello Savitar!",
            "status":200
        }
    }
]

ここでは、get リクエストがシミュレートされ、プレーン テキスト「hello Savitar!」とステータス コード 200 が返されます。まず、ブラウザで localhost:12306/api/hello にアクセスすると、結果は次のようになります。

ここに画像の説明を挿入
インターフェイスが問題を返さないことが示されているため、Python リクエスト + ユニットテストを使用して単純なインターフェイス テスト ケースを作成します。

#coding=utf-8
'''
@author=Savitar
'''
import unittest
import requests

class MocoTestApi(unittest.TestCase):
    def setUp(self):
        self.url = "http://localhost:12306"
    def test_moco_test_api(self):
        api = "/api/hello"
        url = self.url+api
        r = requests.get(url)
        self.assertEqual(r.status_code,200)
        self.assertEqual(r.text,"hello Savitar!")
    def tearDown(self):
        pass

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

 実行結果は次のとおりです。
ここに画像の説明を挿入
上記のコードはアクセス インターフェイスを実装し、アサーションによって返されるステータス コードと戻り内容を示します。アサーションは成功し、インターフェイス テストに合格したことを示します。


              [以下は、私が編集した 2023 年の最も完全なソフトウェア テスト エンジニア学習ナレッジ アーキテクチャ システム図です]


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

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

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


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

5. 一流メーカーの再開


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

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


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

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

寿命が長いのでオイルを追加してください。すべての努力は決し​​て裏切られることはなく、粘り強く続ける限り、最後には必ずご褒美が得られます。自分の時間を大切にして夢を追いかけてください。初心を忘れず、前に進んでください。あなたの未来はあなたの手の中にあります!

人生は短く、時間は貴重です。将来何が起こるかを予測することはできませんが、現在の瞬間を把握することはできます。一日一日を大切にし、自分自身をより強く、より良くするために努力してください。確固たる信念、粘り強い追求、成功はやがてあなたのものになります。

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

  

おすすめ

転載: blog.csdn.net/nhb687096/article/details/132147921