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)
Вернуться на верх