Mock工具wiremock-py-創(chuàng)新互聯(lián)

作者 | 咪咪

創(chuàng)新互聯(lián)公司為您提適合企業(yè)的網站設計?讓您的網站在搜索引擎具有高度排名,讓您的網站具備超強的網絡競爭力!結合企業(yè)自身,進行網站設計及把握,最后結合企業(yè)文化和具體宗旨等,才能創(chuàng)作出一份性化解決方案。從網站策劃到成都做網站、網站建設、外貿營銷網站建設, 我們的網頁設計師為您提供的解決方案。

wiremock-py

wiremock-py 是基于 WireMock 實現(xiàn)的, 使用 Python 批量生成不同測試場景下不同HTTP API 的 mock 數(shù)據, 然后作為 mock server 快速全面地對 API 進行測試。

背景

在數(shù)瀾地產應用的前端測試中, 前端一般依賴于后端的數(shù)據, 前端通過后端在網關上發(fā)布的 HTTP API 獲取數(shù)據. 要對前端進行充分的測試, 理想的做法是, 等待后端部署完成, 并且在數(shù)據層直接輸入不同類型的數(shù)據源, 然后前端直接調用后端發(fā)布在網關上的 API 進行測試。

然而現(xiàn)實的情況是, 前端和后端的開發(fā)進度不完全一致, 如果前端先開發(fā)完成了, 必須要等后端對應的 API 開發(fā)完成后才能開始測試, 而且數(shù)據層的數(shù)據也不容易構造。

為了解決這個問題, 網關平臺做了簡單的 mock 功能, 每個 API 可以填寫一個 mock數(shù)據, 然后前端調用 API 時直接使用這個 mock數(shù)據:

Mock工具wiremock-py

這種方式下, 網關充當了mock server:

Mock工具wiremock-py

但由于大家都使用同一個網關, 一個 API 只能保存一份 mock 數(shù)據, 所以有以下一些缺點:

  • 不同的測試場景需要不同的 mock 數(shù)據來測試, 此時需要刪掉上個測試場景的 mock 數(shù)據, 再創(chuàng)建新場景的 mock 數(shù)據才能進行測試

  • 不能根據測試場景來按照一定的規(guī)則動態(tài)生成 API 對應的 mock 數(shù)據

  • 不能多人同時使用測試同一個 API時, 只能都使用同一份 mock 數(shù)據, 不能各用各的

wiremock-py 可以解決上述這些問題: wiremock-py 通過傳入不同的測試場景參數(shù)來生成不同的 mock 數(shù)據, 同時不同測試場景下使用的 mock 數(shù)據可以保存起來; 生成 mock 數(shù)據時, wiremock-py 支持使用Python和js代碼來動態(tài)生成 mock 數(shù)據(也支持直接使用 json 數(shù)據, 如果 mock 數(shù)據中的數(shù)據量很大, 人工手寫 mock 時的數(shù)據量會很大, 使用代碼生成則比較容易); 不同的測試人員使用各自自己的 mock server, 不會影響到其他測試人員的測試。

Mock工具wiremock-py

測試人員需要做的是: 確定哪些 API 需要進行 mock 以及不同測試場景下對應的 mock 規(guī)則是什么。

依賴環(huán)境

Java 1.8.0_144

Node v8.6.0

Python 3.4.3

演示

快速開始

以貿數(shù)v1.1.0版本 測試環(huán)境為例演示使用 wiremock-py 對樓層客流分布和店鋪客流分布兩張圖分布在3種場景下的測試方法

先確定本地瀏覽器能過正常訪問 http://mall-data.com:9012

準備

克隆代碼

git clone http://git.dtwave-inc.com:30000/baomi.wbm/wiremock-py.git

安裝依賴

cd wiremock-py

pip install -r requirements.txt

npm install mockjs

生成目錄

python mock.py -g "demo"

? wiremock-py git:(master)? python mock.py -g "demo"

DEBUG:root:mockdir=, scene=, target=, proxy_port=5506, generate=demo, wiremock=False, rewrite=False

DEBUG:root:正在生成目錄 /Users/wangbaomi/autotest/wiremock-py/demo

DEBUG:root:創(chuàng)建目錄成功: demo

DEBUG:root:創(chuàng)建目錄成功: demo/js

DEBUG:root:創(chuàng)建目錄成功: demo/json

DEBUG:root:創(chuàng)建目錄成功: demo/python

DEBUG:root:創(chuàng)建目錄成功: demo/wiremock

DEBUG:root:創(chuàng)建文件成功: demo/mappings.json

DEBUG:root:生成目錄完成: /Users/wangbaomi/autotest/wiremock-py/demo

填寫 mappings.json、json、python、js 數(shù)據

mappings.json 中填寫內容:

[

{

    "response": {

        "default": {

            "proxyBaseUrl": "target"

}

},

    "mapping_name": "request url not start with /api",

    "request": {

        "method": "ANY",

        "urlPattern": "/(?!api).*"

    }

},

{

    "mapping_name": "樓層客流分布",

    "request": {

        "urlPattern": "/api/v1/mall_data/customer_flow/every_floor\\?(.*)",

        "method": "POST"

    },

    "response": {

        "default": {

            "proxyBaseUrl": "target"

        },

        "測試場景1": {

            "bodyFileName": {

                "json": "樓層客流分布.json"

            }

        },

        "測試場景2": {

            "bodyFileName": {

                "python": "樓層客流分布.py",

                "python_args": "測試場景2"

            }

        },

        "測試場景3": {

            "bodyFileName": {

                "js": "樓層客流分布.js"

            }

        }

    }

},

{

    "mapping_name": "店鋪客流分布",

    "request": {

        "urlPattern": "/api/v1/mall_data/customer_flow/every_shop\\?(.*)",

        "method": "POST"

    },

    "response": {

        "default": {

            "proxyBaseUrl": "target"

        },

        "測試場景1": {

            "bodyFileName": {

                "js": "店鋪客流分布.js"

            }

        },

        "測試場景2": {

            "bodyFileName": {

                "json": "店鋪客流分布.json"

            }

        },

        "測試場景3": {

            "bodyFileName": {

                "python": "店鋪客流分布.py",

                "python_args": "測試場景3"

            }

        }

    }

}

]

js 文件夾中新建店鋪客流分布.js文件, 內容為:

var r = {
"success": true,
"code": null,
"message": null,
"content": {
"meta": {},

"multi": {

  "group": [

    {

      "id": "rank",

      "name": "排名",

      "value": [

        1,

        2,

        3,

        4

      ]

    }

  ],

  "result": [

    {

      "id": "the_shop",

      "name": "店鋪",

      "value": [

        "店鋪1",

        "店鋪2",

        "店鋪3",

        "第4個店鋪"

      ]

    },

    {

      "id": "customer_count",

      "name": "人數(shù)",

      "value": [

        10,

        100,

        1000,

        3242

      ]

    }

  ]

},

"single": []
}

};

console.log(JSON.stringify(r));

js 文件夾中新建樓層客流分布.js文件, 內容為:

var r = {

"success": true,

"code": null,

"message": null,

"content": {"meta": {},

"multi": {

  "group": [

    {

      "id": "the_floor",

      "name": "樓層",

      "value": [

        "-1樓",

        "1樓",

        "2樓",

        "3樓",

      ]

    }

  ],

  "result": [

    {

      "id": "customer_count",

      "name": "人數(shù)",

      "value": [

        100,

        1000,

        5000,

        567

      ]

    }

  ]

},

"single": []
}

};

console.log(JSON.stringify(r));

json 文件夾中新建店鋪客流分布.json, 內容為:

{

"success": true,

"code": null,

"message": null,

"content": {
"meta": {},
"multi": {

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

文章題目:Mock工具wiremock-py-創(chuàng)新互聯(lián)
鏈接地址:http://www.bm7419.com/article6/ihdig.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供外貿網站建設、做網站定制開發(fā)、品牌網站制作、面包屑導航、小程序開發(fā)

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)