<p>我会使用tornado web框架。在</p>
<pre><code>import json
import functools
import operator
from tornado import ioloop, web, gen
from tornado.options import define, options
define("data_file", default='default/mock.json', type=str)
class Handler(web.RequestHandler):
def data_received(self, chunk):
pass
def initialize(self, data):
self.data = data
@gen.coroutine
def get(self, *args, **kwargs):
path = self.request.path.split("/")[1:]
path = functools.reduce(
operator.add,
[[k, v[0].decode("utf-8")] for k, v in self.request.query_arguments.items()],
path
)
try:
self.write(functools.reduce(operator.getitem, path, self.data))
except KeyError:
self.set_status(404)
class Application(web.Application):
def __init__(self):
data = {}
with open(options.data_file) as data_file:
data = json.load(data_file)
handlers = [
('(.*)', Handler, {"data": data})
]
settings = dict(
gzip=True,
static_hash_cache=True,
)
web.Application.__init__(self, handlers, **settings)
def main():
io_loop = ioloop.IOLoop.instance()
backend_application = Application()
backend_application.listen(8001)
io_loop.start()
if __name__ == "__main__":
main()
</code></pre>
<p>这是我用来模拟REST-API的代码,REST-API是一个独立的脚本,但它也可以嵌入到测试环境中。在</p>
<p>我定义了一个JSON文件,它定义了不同的路径组件和应该返回的内容。像这样:</p>
^{pr2}$
<p>我把这个保存到mock.json文件并使用参数<code>mock_rest.py --data-file="./mock.json"</code>调用脚本。在</p>
<p>我希望这能给你一个起点和一个很好的例子。在</p>