为Pytest提供的Redis fixtures和fixture factories。
项目描述
pytest-redis
这是什么?
这是一个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例如,上述功能如下
- pytest运行测试 
- redis_proc启动Redis数据库服务器 
- redisdb创建到服务器的客户端连接 
- 测试本身运行并完成 
- redisdb清理Redis 
- redis_proc停止服务器(如果是最后一个使用它的测试) 
- 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 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 41c98c01def18af533805c0862bc098dede03b8228a4e17761daef1beb701fdf | |
| MD5 | 7902af32813a88bd78ea28a367f12a6a | |
| BLAKE2b-256 | 8e991b27c92853d67925f06445efbc75130a72710fb23fc31edf6f47b41f587c | 
pytest_redis-3.1.2-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | d06403986dfc2c5bbb11d1b213b75d9108d1ebc2cd9f943dfa8d4d1977c08d03 | |
| MD5 | 515194977b1f199192d16db617a24804 | |
| BLAKE2b-256 | 27c3e877361d6d628b2f81f198902373ef74dd8bb18c34cb3ca8efba3859aebc |