小编use*_*081的帖子

Django模拟补丁不能像我期望的那样工作

简介:我正在尝试创建一个简单的模拟来替换redis.从代码中可以明显看出我要做的事情.简短的版本是,模拟不起作用 - 它仍然是redis和创建密钥.

tests.py:

from django.test import TestCase
import mock
from redis_mock.simple_redis_mock import redisMockGetRedis, redisMockFlushDB
from account.util import get_redis

class SimpleTest(TestCase):

    def setUp(self):
        redisMockFlushDB()

    @mock.patch("account.util.get_redis", redisMockGetRedis)
    def test_redis(self):
        key = "hello123"
        value = "world123"
        r = get_redis()
        r.set(key, value)
        value2 = r.get(key)
        self.assertEqual(value, value2)
Run Code Online (Sandbox Code Playgroud)

util.py:

import redis

REDIS_HOST = 'localhost'
REDIS_PORT = 6379
REDIS_DEFAULT_DB = 0

def get_redis():
    print "account.util.get_redis"
    return redis.StrictRedis(
        REDIS_HOST, 
        REDIS_PORT, 
        REDIS_DEFAULT_DB
    )
Run Code Online (Sandbox Code Playgroud)

simple_redis_mock.py:

"""
A simple mock for Redis. Just mocks set, get and expire commands. …
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)

python django unit-testing mocking redis

2
推荐指数
2
解决办法
3784
查看次数

标签 统计

django ×1

mocking ×1

python ×1

redis ×1

unit-testing ×1