UUID не работает в pytest из-за форматирования?
Я возвращаю UUID пользователя в своем сериализаторе, и это работает нормально. Однако при написании модульного теста для проверки этого возврата тест не работает, несмотря на то, что они вызываются одинаково. Ниже приведена упрощенная версия моего кода.
Мой serializers.py:
class UserSerializer(serializers.ModelSerializer):
user_sso = serializers.SerializerMethodField("get_user_sso")
class Meta:
model = get_user_model()
fields = (
"user_sso",
)
def get_user_sso(self, user):
return user.profile.sso_id
Мой модульный тест в test_views.py
class TestUserAPIView(BaseAPIViewTest):
factory = factories.UserFactory
def expected_response(self, user):
return {
"user_sso": user.profile.sso_id,
}
Сообщение о неудачном тесте (пользователь, сгенерированный с завода, является верхним):
E - 'user_sso': UUID('f696d740-bdd5-43a3-8f58-406b7a1e117d')},
E ? ----- -
E + 'user_sso': 'f696d740-bdd5-43a3-8f58-406b7a1e117d'},
Как сделать так, чтобы тест прошел?
У меня нет слова 'UUID(' в начале моего текущего вывода, что, похоже, является проблемой, но я не уверен, как удалить это, не превращая все в строку? Большое спасибо.
Пожалуйста, примите результат str(…)
в качестве ответа, иначе он примет сам UUID, так:
class UserSerializer(serializers.ModelSerializer):
user_sso = serializers.SerializerMethodField("get_user_sso")
# …
def get_user_sso(self, user):
return str(user.profile.sso_id)