用于测试目的的redis api的伪实现。

fakeredis-fix的Python项目详细描述


这是一个“fakeredis”分支,支持python 3.3,不与“rq”断开。当修复程序合并到主存储库时,此包将被删除。

fake redis:redis py的伪版本

https://secure.travis-ci.org/jamesls/fakeredis.png?branch=masterhttps://coveralls.io/repos/jamesls/fakeredis/badge.png?branch=master

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

在实现方面,TestRealRedisTestFakeRedis重写要创建的工厂方法 redis.Redis(redis的实际python客户机)的实例 而不是fakeredis.FakeStrictRedis

要同时运行单元测试和“集成”测试,请运行:

nosetests

如果redis没有运行,而您试图对真正的redis服务器运行测试, 这些测试的结果为“s”,表示跳过。

有些测试测试redis阻塞操作 慢点。如果你想在日常开发中跳过这些测试, 它们都被标记为“慢速”,因此您可以通过运行来跳过它们:

nosetests -a '!slow'

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

推荐PyPI第三方库


热门话题
java我的int值在SharedReferences中不被记住   java如何编辑Spring可分页对象?   java如何在gradle中单独调用任务   jvm以编程方式设置最大java堆大小   java如果满足多个条件,如何使用If语句计算数字?   如何在java中从json文件中获取特定值   如何在Sphinx4中为Java语音识别添加自定义语法?   java int[]copy=data;//当数据是数组时会发生什么?   java豪猪管理器。停下来。destroy()不起作用   安卓在API级别28中找不到画布变量   基于SOLID的java冗余   用于talend作业的java Liferay和portlet   从java到安卓的视频流   java获取在控件的类定义中添加自定义控件的场景大小   awt Java IndexOutOfBoundsException   java如何使用Spring JmsTemplate更改MQ头   java遍历数组并打印每个对象   java Google Map api v2标记在我旋转手机和地图“刷新”之前不会移动