跳转到主要内容

为Pytest提供的Redis fixtures和fixture factories。

项目描述

https://raw.githubusercontent.com/ClearcodeHQ/pytest-redis/master/logo.png

pytest-redis

Latest PyPI version Wheel Status Supported Python Versions License

这是什么?

这是一个pytest插件,它使您能够测试依赖于运行中的Redis数据库的代码。它允许您为Redis进程和客户端指定额外的fixtures。

如何使用

插件包含三个fixtures

  • redisdb - 这是一个redis客户端fixture。它在测试后构建redis客户端并清理redis数据库。

    它依赖于redis_proc测试固定装置,因此Redis进程将在使用此装置的第一个测试的开始处启动,并在最后一个测试完成后停止。

  • redis_proc - 会话范围测试固定装置,在第一次使用时启动Redis实例,并在测试结束时停止。

  • redis_nooproc - 一个空进程固定装置,连接到已运行的Redis。

只需将其中之一包含到您的测试固定装置列表中。

#
def test_redis(redisdb):
    """Check that it's actually working on redis database."""
    redisdb.set('test1', 'test')
    redisdb.set('test2', 'test')

    my_functionality = MyRedisBasedComponent()
    my_functionality.do_something()
    assert my_functionality.did_something

    assert redisdb.get("did_it") == 1

例如,上述功能如下

  1. pytest运行测试

  2. redis_proc启动Redis数据库服务器

  3. redisdb创建到服务器的客户端连接

  4. 测试本身运行并完成

  5. redisdb清理Redis

  6. redis_proc停止服务器(如果是最后一个使用它的测试)

  7. pytest结束运行测试

如果您需要,也可以创建额外的Redis客户端和进程固定装置

from pytest_redis import factories

redis_my_proc = factories.redis_proc(port=None)
redis_my = factories.redisdb('redis_my_proc')

def test_my_redis(redis_my):
    """Check that it's actually working on redis database."""
    redis_my.set('test1', 'test')
    redis_my.set('test2', 'test')

    my_functionality = MyRedisBasedComponent()
    my_functionality.do_something()
    assert my_functionality.did_something

    assert redis_my.get("did_it") == 1

连接到已存在的Redis数据库

一些项目正在使用已运行的Redis服务器(例如在Docker实例上)。为了连接到它们,将使用redis_nooproc固定装置。

redis_external = factories.redisdb('redis_nooproc')

def test_redis(redis_external):
    """Check that it's actually working on redis database."""
    redis_external.set('test1', 'test')
    redis_external.set('test2', 'test')

    my_functionality = MyRedisBasedComponent()
    my_functionality.do_something()
    assert my_functionality.did_something

    assert redis_external.get("did_it") == 1

它适用于标准配置选项。注意,对于redis_nooproc固定装置,modules配置选项没有效果,需要扩展模块的Redis服务器正确启动的责任。

默认情况下,redis_nooproc固定装置将使用端口6379连接到Redis实例,并在15秒内尝试建立成功的套接字连接。固定装置将在超时窗口内阻塞您的测试运行。您可以通过以下方式覆盖超时

# set the blocking wait to 5 seconds
redis_external = factories.redis_noproc(timeout=5)

def test_redis(redis_external):
    """Check that it's actually working on redis database."""
    redis_external.set('test1', 'test')
    # etc etc

这些是在所有级别上与redis_nooproc固定装置一起工作的配置选项

配置

您可以通过三种方式定义设置,它是固定装置工厂参数、命令行选项和pytest.ini配置选项。您可以挑选您喜欢的,但请记住,这些设置按照以下顺序处理

  • 固定装置工厂参数

  • 命令行选项

  • pytest.ini文件中的配置选项

配置选项

Redis服务器选项

固定装置工厂参数

命令行选项

pytest.ini选项

空进程固定装置

默认

可执行文件

可执行文件

–redis-exec

redis_exec

通过shutil.which在PATH中查找redis-server

主机

主机

–redis-host

redis_host

主机

127.0.0.1

端口

端口

–redis-port

redis_port

端口

随机

用户名

用户名

–redis-username

redis_username

用户名

密码

密码

–redis-password

redis_password

密码

连接超时

超时

–redis-timeout

redis_timeout

30

数据库数量

db_count

–redis-db-count

redis_db_count

8

是否启用将日志记录到系统日志记录器

syslog

–redis-syslog

redis_syslog

Redis日志详细程度级别

loglevel

–redis-loglevel

redis_loglevel

通知

压缩转储文件

compress

–redis-compress

redis_compress

向RDB文件添加校验和

checksum

–redis-rdbcompress

redis_rdbchecksum

保存配置

save

–redis-save

redis_save

“”

Redis测试实例数据目录路径

datadir

–redis-datadir

redis_datadir

“”

Redis测试实例扩展模块路径

modules(路径列表)

–redis-modules(以逗号分隔的字符串)

redis_modules(以逗号分隔的字符串)

“”

示例用法

  • 将其作为您自己的固定装置的参数传递

redis_proc = factories.redis_proc(port=8888)
  • 运行测试时,请使用 --redis-port 命令行选项。

py.test tests --redis-port=8888
  • 在您的 pytest.ini 文件中将端口号指定为 redis_port

    要这样做,请在 pytest.ini[pytest] 部分下添加如下一行:

[pytest]
redis_port = 8888

以下选项用于配置 Redis 客户端 fixture。

Redis 客户端选项

固定装置工厂参数

命令行选项

pytest.ini选项

默认

decode_response

decode

–redis-decode

redis_decode

发布

首先安装 pipenv 和 –dev 依赖项,然后运行

pipenv run tbump [NEW_VERSION]

项目详情


下载文件

下载适合您平台的文件。如果您不确定该选择哪个,请了解有关 安装软件包 的更多信息。

源分布

pytest_redis-3.1.2.tar.gz (38.1 kB 查看哈希值)

上传时间

构建分布

pytest_redis-3.1.2-py3-none-any.whl (32.9 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面