我在我的序列化器中回傳用戶的 UUID,這很好用。但是,在撰寫單元測驗來測驗此回傳時,盡管以相同的方式呼叫它們,但測驗失敗。下面是我的代碼的簡化版本。
我的序列化程式.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(”這個詞,這看起來是問題所在,但我不知道如何在不使所有內容都成為字串的情況下將其洗掉?非常感謝。
uj5u.com熱心網友回復:
請將結果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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/380721.html
