用于测试目的的redis api的伪实现。
fakeredis-fix的Python项目详细描述
这是一个“fakeredis”分支,支持python 3.3,不与“rq”断开。当修复程序合并到主存储库时,此包将被删除。
fake redis:redis py的伪版本
fakeredis是redis py python客户端的纯python实现 它模拟与redis服务器的对话。这是为一个 目的:编写单元测试。设置redis并不难,但是 很多时候,您希望编写不与外部服务器通信的单元测试 (如redis)。这个模块现在允许测试简单地使用这个 模块是redis的合理替代品。
如何使用
目的是让伪君子假装你在和一个真正的 redis服务器。它通过在fakeredis模块中存储状态来实现这一点。 例如:
>>> import fakeredis >>> r = fakeredis.FakeStrictRedis() >>> r.set('foo', 'bar') True >>> r.get('foo') 'bar' >>> r.lpush('bar', 1) 1 >>> r.lpush('bar', 2) 2 >>> r.lrange('bar', 0, -1) [2, 1]
通过在fakeredis模块中存储状态,实例可以共享 数据:
>>> import fakeredis >>> r1 = fakeredis.FakeStrictRedis() >>> r1.set('foo', 'bar') True >>> r2 = fakeredis.FakeStrictRedis() >>> r2.get('foo') 'bar' >>> r2.set('bar', 'baz') True >>> r1.get('bar') 'baz' >>> r2.get('bar') 'baz'
fakeredis实现的接口与redis-py相同, 流行的用于python的redis客户端,并对响应建模 第2.6版。
未实现的命令
所有的redis命令都是用 这些例外情况:
散列
- hincrbyfloat
字符串
- incrbyfloat
- bitop
- psetex
一般
- restore
- dump
- pexpireat
- pttl
- pexpire
- migrate
- object
服务器
- debug object
- client list
- lastsave
- slowlog
- sync
- shutdown
- monitor
- client kill
- config resetstat
- time
- config get
- save
- debug segfault
- bgsave
- bgrewriteaof
- slaveof
- info
- config set
- dbsize
连接
- echo
- select
- quit
- auth
脚本
- script flush
- script kill
- script load
- evalsha
- eval
- script exists
PubSub
- punsubscribe
- subscribe
- publish
- psubscribe
- unsubscribe
贡献
欢迎捐款。请参阅contributing guide了解 更多细节。
运行测试
为了确保与真正的redis对等,有一组集成测试 它反映了单元测试。对于所编写的每个unittest,相同的 使用真正的redis py客户机对真正的redis实例运行测试 实例。为了运行这些测试,必须有一个redis服务器在运行 在本地主机上,端口6379(默认设置)。集成测试使用 DB=10,以最小化与现有ReIIS实例的冲突。
要运行所有测试,请安装需求文件:
pip install -r requirements.txt
如果您只想运行unittests:
nosetests test_fakeredis.py:TestFakeStrictRedis test_fakeredis.py:TestFakeRedis
因为这个模块试图提供与redis-py相同的接口, python绑定到redis,这是测试每个 unittest并在真正的redis服务器上运行它。赝品和真正的redis 服务器应该给出相同的结果。这确保了两者之间的平等。你 可以像这样运行这些“集成”测试:
nosetests test_fakeredis.py:TestRealStrictRedis test_fakeredis.py:TestRealRedis
在实现方面,TestRealRedis是 TestFakeRedis重写要创建的工厂方法 redis.Redis(redis的实际python客户机)的实例 而不是fakeredis.FakeStrictRedis。
要同时运行单元测试和“集成”测试,请运行:
nosetests
如果redis没有运行,而您试图对真正的redis服务器运行测试, 这些测试的结果为“s”,表示跳过。
有些测试测试redis阻塞操作 慢点。如果你想在日常开发中跳过这些测试, 它们都被标记为“慢速”,因此您可以通过运行来跳过它们:
nosetests -a '!slow'