为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 |