Я только что обнаружил, что куча модульных тестов терпит неудачу, потому что разработчик не издевался над зависимостью с клиентом redis в тесте. Я пытаюсь дать руку в этом вопросе, но испытываю трудности.
Метод записывает клиенту 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-клиент get() и установить() успешно.
@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
of get()
на то, что будет задано set()
в коде, чтобы тест прошел.
Сейчас эта строка не проходит тест:
res = cPickle.loads(get_redis_client().get('temp-facility-data'))
TypeError: must be string, not MagicMock
Любые советы, пожалуйста?