Я только что обнаружил, что куча модульных тестов терпит неудачу, потому что разработчик не издевался над зависимостью с клиентом redis в тесте. Я пытаюсь дать руку в этом вопросе, но испытываю трудности.Как насмехаться с клиентом redis в Python?
Метод записывает в Redis клиента:
redis_client = get_redis_client()
redis_client.set('temp-facility-data', cPickle.dumps(df))
Позже в утверждаете результат извлеченной:
res = cPickle.loads(get_redis_client().get('temp-facility-data'))
expected = pd.Series([set([1, 2, 3, 4, 5])], index=[1])
assert_series_equal(res.variation_pks, expected)
мне удалось залатать Получить REDIS клиента() и установить() успешно ,
@mock.patch('redis.StrictRedis.get')
@mock.patch('redis.StrictRedis.set')
def test_identical(self, mock_redis_set, mock_redis_get):
mock_redis_get.return_value = ???
f2 = deepcopy(self.f)
f3 = deepcopy(self.f)
f2.pk = 2
f3.pk = 3
self.one_row(f2, f3)
, но я не знаю, как установить return_value
из get()
к тому, что set()
будет установлен в коде, так что тест будет проходить.
Сейчас эта линия не проходит тест:
res = cPickle.loads(get_redis_client().get('temp-facility-data'))
TypeError: must be string, not MagicMock
Любые консультации, пожалуйста?
использования 'side_effect' с общим объектом является установлен в наборе 'side_effect' и возвращен в get' side_effect'? https://docs.python.org/3/library/unittest.mock.html#quick-guide – user3012759