快速简单的服务器模拟。
faux的Python项目详细描述
快速简单的服务器模拟
安装
通过github:
~$ git clone http://github.com/bprinty/faux.git
~$ cd faux
~$ python setup.py install
通过PIP:
~$ pip install faux
文件
可以找到该包的文档here
用法
faux提供了在测试期间模拟外部服务响应的实用程序。使用faux,您可以很容易地为外部托管服务提供模拟url端点的目录结构,并使用该服务器进行测试
高水平
例如,如果您的目录结构如下所示:
├── _uuid ├── file └── query/ ├── data └── arg=test
将以下内容作为该目录结构中文件的内容:
# _uuid { "status": "ok", "city": "{{city}}" } # file { "status": "ok", "month": "{{month}}", } # query/arg=test { "status": "ok", "arg": "test", "digit": {{random_digit}} } # query/data { "status": "ok", "data": "test" }
镜像该文件结构的终结点将可用:
>>>importrequests>>>r=requests.get('http://localhost:1234/4db5fd8c-8aa6-4c29-b979-dab3ce71e64e')>>>print(r.json()){"status":"ok","city":"Sacramento",}>>>r=requests.get('http://localhost:1234/file')>>>print(r.json()){"status":"ok","month":"05"}>>>r=requests.get('http://localhost:1234/query?arg=test')>>>print(r.json()){"status":"ok","arg":"test","digit":4}>>>r=requests.get('http://localhost:1234/query/data')>>>print(r.json()){"status":"ok","data":"test"}
值得注意的是(上面提到过),您可以使用faker库中的方法模拟响应中的任意数据上面的{{city}和{{month}等项在请求期间自动和随机填充,没有来自faker.faker()对象的输出。
上面的另一个特殊文件是\uuid文件,当请求中包含uuid时,它将从\uuid文件返回数据
启动服务器
对于上一个示例,可以使用以下命令在特定端口上启动服务器:
.. code-block:: bash
~$ faux serve -P 1234 /path/to/directory
在测试中使用
使用此软件最常见的一种模式是在测试期间模拟服务要使用此模块执行此操作,可以轻松设置py.test fixture,该fixture将在整个测试会话中运行:
importunittestimportpytestRESOURCES='/path/to/testing/resources'@pytest.fixture(scope='session')defserver():""" Set up mock server for testing request caching. """fromfauximportServerapp=Server(__name__,cache=RESOURCES)withapp.run(port=1234):yieldreturn
一旦定义了fixture,就可以在测试类或类似这样的函数上使用它:
# test function@pytest.mark.usefixtures("server")deftest_function():return# test class@pytest.mark.usefixtures("server")classTestClass(unittest.TestCase):deftest_method():return
上面的代码,您嘲弄的服务器将在整个测试会话中运行,并且在测试会话停止时将优雅退出。
其他功能
要查看库提供的其他功能,请参见documentation
问题/反馈
在GitHub issue tracker中提交问题