Estoy devolviendo el UUID de un usuario en mi serializador y esto funciona bien. Sin embargo, al escribir una prueba unitaria para probar este retorno, la prueba falla a pesar de que se llaman de la misma manera. A continuación se muestra una versión simplificada de mi código.
Mi serializadores.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_idMi prueba unitaria en test_views.py
class TestUserAPIView(BaseAPIViewTest): factory = factories.UserFactory def expected_response(self, user): return { "user_sso": user.profile.sso_id, }El mensaje de prueba fallida (el usuario generado desde una fábrica es el primero):
E - 'user_sso': UUID('f696d740-bdd5-43a3-8f58-406b7a1e117d')}, E ? ----- - E + 'user_sso': 'f696d740-bdd5-43a3-8f58-406b7a1e117d'},¿Cómo hago para que pase esta prueba?
No tengo la palabra 'UUID(' al comienzo de mi salida actual, que parece ser el problema, pero no estoy seguro de cómo eliminar esto sin que todo forme una cadena. Muchas gracias.
Tome el resultado de str(…) como respuesta; de lo contrario, tomará el UUID en sí mismo, así que:
class UserSerializer(serializers.ModelSerializer): user_sso = serializers.SerializerMethodField("get_user_sso") # … def get_user_sso(self, user): return str( user.profile.sso_id )