[英]How to create a Django REST Framework View instance from a ViewSet class?
我試圖對Django REST Framework視圖集權限進行單元測試,原因有二:速度和簡便性。 為了實現這些目標,我還想避免使用任何模擬框架。 基本上我想做這樣的事情:
request = APIRequestFactory().post(…)
view = MyViewSet.as_view(actions={"post": "create"})
self.assertTrue(MyPermission().has_permission(request, view))
這種方法的問題是, view
實際上不是一個View
實例而是它做了一個功能 View
實例,它不具有某些特性,我在使用has_permission
,如action
。 如何構造可以傳遞給has_permission
的View
實例?
權限已經在集成和接受級別上進行了測試,但是我想避免創建多個復雜且耗時的測試來簡單地檢查每個相關動作是否受到保護。
我可以通過猴子修補視圖集實例並手動調度它來解決此問題:
view_set = MyViewSet()
view_set.action_map = {"post": "create"}
view_set.dispatch(request)
您可以執行以下操作。
request = APIRequestFactory().post(…)
view_obj = MyViewSet()
self.assertTrue(MyPermission().has_permission(request, view_obj))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.