在Django更容易使用伪造品。

django-fakeredis的Python项目详细描述


CircleCI

在Django更容易使用fakeredis

安装

pip install django-fakeredis

为什么要用它?

我经历了很多次在测试中发现由多个fakeredis实例引起的bug。 我们只想在一个redis服务器和不同连接上使用像redis这样的fakerredis,并且可以在redis中使用monitor命令进行调试

特点:

  • 一个fakeredis服务器,具有多个连接,用于像使用redis这样的测试。
  • 将覆盖设置合并到本地内存和伪get_redis_connectiondjango's cache
  • 要禁用传递env的伪操作:“nofake_redis=1” NOFAKE_REDIS=1 python manage.py test

在使用django_fakeredis之前,您的测试代码可能是这样的:

server=fakeredis.FakeServer()@override_settings(CACHES={"default":{"BACKEND":"django.core.cache.backends.dummy.DummyCache"}})@patch('foo.get_redis_connection',fakeredis.FakeRedis(server=server)deftest_sth():....

现在您可以:

@FakeRedis("yourpath.get_redis_connection")deftest_sth():...

使用量

fromdjango_fakeredisimportFakeRedis@FakeRedis("yourpath.get_redis_connection")deftest_foo():...
fromdjango_fakeredisimportFakeRediswithFakeRedis("yourpath.get_redis_connection"):foo()
fromdjango_fakeredisimportFakeRediswithFakeRedis("yourpath.cache"):foo()

注意

  1. 如果您想用fakeredis模拟django.core.cache.cache,django fakeredis只需将缓存设置覆盖到Local-Memory中以使用内部转换。所以django.cache和get redis连接有两个模拟的redis实例。

如果您想使用更多的redis命令,比如:sets,list…,您可能需要使用django_redis,并手动转换结果。

django.cache:

from django.core.cache import cache
cache.set("key", 2)
assert cache.get("key") == 2

您必须手动铸造,当直接使用Fakeredis或Django廑u Redis时,您必须手动铸造:

import fakeredis
con = fakeredis.FakeStrictRedis()
con.set("key", 2)
assert con.get("key").decode('utf8') == "2"
  1. 如果您有一个mock不工作的问题,您可能应该看到where to patch

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

推荐PyPI第三方库


热门话题
java Jsonify使用Jackson来定义嵌套对象   在Swing中禁用java图形调试   java Selenium Webdriver拖放在Jenkins上不起作用   java我对一个显示器的问题有一个非常不切实际的询问   java增强的“for”循环导致ArrayIndexOutOfBoundsException   ArrayAdapter适用于Java中的安卓编程,字符串数组   linux在Ubuntu上通过PulseAudio播放Java音频文件时出错   java在Spring应用程序中加载内部(类路径)和外部属性文件   java使用Maven连接到mySQL   Java应用程序的设计   websocket在电报api java中与dc的连接   java XMLStreamException,因为xml中的(&N)   java从控制台输出到JTextArea   Java导出文本文件   java实现parseInt方法   java为什么servlet容器会同步对特定资源/servlet的多个请求的访问?   循环中的Java“while”变量   用Java编程一个国际象棋游戏,gameOver布尔不起作用   java如何获得真正的JPanel大小?