に私はこのようないくつかのコードがあります:は異なる戻り値を持つ2つのRedisのhgetsをモック同じPython関数
import redis
redis_db = redis.Redis(host=redis_host_ip, port=redis_port, password=redis_auth_password)
def mygroovyfunction():
var_a = redis_db.hget(user, 'something_a')
var_b = redis_db.hget(user, 'something_b')
if var_a == something_a:
return Response(json.dumps({}), status=200, mimetype='application/json')
if var_b == something_b:
return Response(json.dumps({}), status=400, mimetype='application/json')
をしてから、このテストユニット用tests.pyファイルで、私はこのようないくつかのコードを持っています:
import unittest
from mock import MagicMock, Mock, patch
@patch('redis.StrictRedis.hget', return_value='some value')
class MyGroovyFunctionTests(unittest.TestCase):
def test_success(self, mock_redis_hget):
response = self.app.get('mygroovyfunction')
self.assertEqual(response.status_code, 200)
私はこの質問には関係しないので、いくつか他のフラスコのものがあります。
私が知りたかったのは、個々のredis hgetの戻り値をモックすることが可能な場合でした。私の現在のコードでは、返された戻り値はvar_b
に置き換えられます。したがって、テストケースが実行されるとvar_a
も同じ値になり、コードはreturn status_codeが400になるパスになります。
このようなことを行う正しい方法は?