快速简单的服务器模拟。

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中提交问题

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何通过解决错误“活动无法转换为片段”将片段传递给类构造函数?   Java中清理Code39条码数据的regex帮助   将java转换为C++   java无法在Android Studio中生成签名的apk,出现错误   从数学方程出发   MySQL和Java内存问题   如何强制Java抛出算术异常?   java为什么JDBC将零端口视为空(默认)端口?   java如何在没有“changelog主题”的情况下加入KStream和KTable   排序我尝试合并两个排序的数组,但得到的是java。lang.ArrayIndexOutofBounds异常:5无法找出原因   如何在java中求大长度矩阵的逆?   基于maven构建的java生成类路径字符串   java每20个字符分割一个字符串,然后将每个部分打印到控制台   将字符串数字字转换为字符串数字:Java   在特定区域使用混合类型的java填充字节数组   尽管java类在开关块中实例化,但它只能调用接口方法