支持多種服務mock的工具 OpenMock
VSole2022-08-01 10:23:46
1 推薦理由
當項目依賴比較多的其他服務,在測試時,通常連接是這些服務的test環境,但是這樣做第一 無法保證被依賴服務用例的完備性,第二 在實際測試過程中可能會遇到比較多費時費力的聯調問題。本次推薦的openmock工具,通過mock的手段,可以簡化此類項目的測試過程。
2 功能介紹
openmock支持通過yaml文件,配置HTTP、gRPC、Kafka、AMQP (e.g. RabbitMQ) 等協議的mock服務。
3 使用指南
3.1 安裝
下載代碼,并進入目錄:
$ git clone git@github.com:checkr/openmock.git $ cd openmock
使用docker安裝:
$ docker run -it -p 9999:9999 -v $(pwd)/demo_templates:/data/templates checkr/openmock
或
$ docker-compose up
檢查是否安裝成功:
$ curl localhost:9999/ping
3.2 配置示例
openmock的配置文件可以分成4大部分:
- Schema:openmock可以配置多個行為,每個行為通過key和kind來表示;
- Except:用來定義協議類型(HTTP、gRPC、Kafka、AMQP),以及觸發當前行為的條件;
- Action:用來定義當前行為的執行結果;
- Template:用來定義和組裝響應payload。
下面是HTTP mock server的配置示例:
# 這里是 Template
- key: http-request-template
kind: Template
template: >
{ "http_path": "{{.HTTPPath}}", "http_headers": "{{.HTTPHeader}}" }
# 這里也是Template
- key: color-template
kind: Template
template: >
{ "color": "{{.color}}" }
# 這里是Schema
- key: teapot
kind: AbstractBehavior
# 這里Except
expect:
http:
method: GET
path: /teapot
# 這里Action
actions:
- reply_http:
status_code: 418
body: >
# 這里使用了Template
{
"request-info": {{ template "http-request-template" . }},
"teapot-info": {{ template "color-template" .Values }}
}
- key: purple-teapot
kind: Behavior
extend: teapot
values:
color: purple
測試一下,可以看到如下結果:
$ curl localhost:9999/teapot
{"request-info":{"http_path":"/teapot","http_headers":""},"teapot-info":{"color":"purple"}}
更多示例請參考:
https://github.com/checkr/openmock/tree/master/demo_templates
4 總結
openmock 通過yaml文件可以實現快速mock服務,并且可以支持多種協議,比如HTTP、gRPC、Kafka、AMQP等。在項目測試時,可以試試使用openmock,看看能否提高項目的測試效率。
VSole
網絡安全專家