https://github.com/knightliao/pfrock
A plugin-based server for running fake HTTP and socket services (especially SOA service) using Python.
_ (`-. _ .-') .-. .-')
( (OO ) ( \( -O ) \ ( OO )
_.` \ ,------.,------. .-'),-----. .-----. ,--. ,--.
(__...--''('-| _.---'| /`. '( OO' .-. ' ' .--./ | .' /
| / | |(OO|(_\ | / | |/ | | | | | |('-. | /,
| |_.' |/ | '--. | |_.' |\_) | |\| | /_) |OO )| ' _)
| .___.'\_)| .--' | . '.' \ | | | | || |`-'| | . \
| | \| |_) | |\ \ `' '-' '(_' '--'\ | |\ \
`--' `--' `--' '--' `-----' `-----' `--' '--'
python >=2.7
https://github.com/knightliao/pfrock/blob/master/README-en.md
也就是说,
通过此种方式, 我们可以以最低的侵入性, 实现为系统的部分或者全部接口进行 mock.
pip install pfrock==0.2.5
(pypi: https://pypi.python.org/pypi/pfrock)
- demo
- mocks
- handler
- hello_world.py
- __init__.py
- static
- a.json
- b.json
- __init__.py
- __init__.py
- pfrockfile.json
{
"servers": [
{
"port": 8888,
"routes": [
{
"path": "/api1/(.*)",
"handler": "pfrock_static_plugin",
"options": {
"routes": [
{
"path": "json",
"file": "mocks/static/a.json"
},
{
"dir": "mocks/static"
}
]
}
},
{
"path": "/api",
"methods": [
"GET"
],
"handler": "pfrock_http_plugin",
"options": {
"handler": "mocks.handler.hello_world.HelloWorldHandler",
"query": "1!",
"pageno": 1
}
},
{
"path": ".*",
"methods": "any",
"handler": "pfrock_proxy_plugin",
"options": {
"url": "http://www.sov5.com"
}
}
]
}
]
}
➜ pfrock git:(master) ✗
➜ pfrock git:(master) ✗ cd demo
➜ demo git:(master) ✗ pfrockpy
_ (`-. _ .-') .-. .-')
( (OO ) ( \( -O ) \ ( OO )
_.` \ ,------.,------. .-'),-----. .-----. ,--. ,--.
(__...--''('-| _.---'| /`. '( OO' .-. ' ' .--./ | .' /
| / | |(OO|(_\ | / | |/ | | | | | |('-. | /,
| |_.' |/ | '--. | |_.' |\_) | |\| | /_) |OO )| ' _)
| .___.'\_)| .--' | . '.' \ | | | | || |`-'| | . \
| | \| |_) | |\ \ `' '-' '(_' '--'\ | |\ \
`--' `--' `--' '--' `-----' `-----' `--' '--'
pfrock version 0.2.2
[I 2016-03-04 14:07:05,231 pfrock.core MainThread __init__:19] started server 8888 with autoreload mod
➜ ~ curl http://localhost:8888/api1/json
{
"a": "bddd33e34"
}%
➜ ~ curl -X POST -d {} http://localhost:8888/api1/json
{
"a": "bddd33e34"
}%
➜ ~ curl http://localhost:8888/api1/b.json
{
"b": "bbb"
}%
➜ ~ curl 'http://localhost:8888/api'
Hello, world 1! 1% ➜ ~
那么, 除了上面这些 URL 之外, 没有被匹配的 URL 怎么办? 就用代理到默认的服务器上吧! 这在项目中经常会被用到.
➜ ~ curl 'http://localhost:8888/'
没有匹配到的 URL 自动被 路由到 设定的 域名和端口上.
这里是被路由到 http://www.sov5.com
https://github.com/knightliao/pfrock-demos
建议按以下方式进行敏捷开发
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.