У меня есть тест, определенный как показано ниже
@patch('user.serializers.validate_sns_token', return_value=True)
def test_can_create_user(self, validate):
"""
Test that user can be created without logging in
:return:
"""
user_payload = self.generate_user_payload()
resp = self.client.post(
CREATE_USER_URL,
user_payload,
)
self.assertTrue(validate.called)
self.assertEqual(
resp.status_code,
status.HTTP_200_OK,
)
Внутри файла user.serializers.py У меня есть функция ниже, которую я хотел бы смоделировать
def validate_sns_token(**kwargs):
try:
...
return True
except ValueError as e:
...
return False
Это внешний вызов в Google API, поэтому я хотел бы всегда возвращать True из него.
Внутри сериализатора я вызываю функцию создания, как показано ниже
def create(self, validated_data):
...
is_token_valid = validate_sns_token(
sns_id=sns_id,
sns_type=sns_type,
token=token,
)
if is_token_valid is False:
raise serializers.ValidationError('토큰이 유효하지 않습니다. 다시 로그인해주세요.', code='AUTH')
...
return user
К сожалению, validate.called всегда False и исходный validate_sns_token все еще вызывается. Как мне написать тест, чтобы исходный validate_sns_token не вызывался вообще, а его возвращаемое значение установлено в True?