0

我一直在試圖測試尚未驗證的用戶。單元測試嘗試登錄

class TestLoginApi(TestCase): 
    URL = '/rest-auth/login/' 
    EMAIL = '[email protected] 
    PASSWORD = 'password' 
    DATA = {'email': EMAIL, 'password': PASSWORD} 

    @classmethod 
    def setUpTestData(cls): 
     cls.user = get_user_model().objects.create_user(username='testuser', email=cls.EMAIL, 
                password=cls.PASSWORD) 

def test_login_api_without_verification(self): 
    response = self.client.post(self.URL, self.DATA, format='json') 

的 「迴應」 行引發以下錯誤

錯誤 回溯(最近通話最後一個): 文件「/Library/Frameworks/Python.framework/Versions/3.6/lib/ python3.6/unittest/case.py「,第59行,在testPartExecutor 產量 文件」/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/case.py「,第601行,在運行 TestMethod的() 文件「/用戶/ docdocengineering3/GitHub上/網站/項目/授權/測試/ TEST_ login.py「,第34行,在test_login_api_without_verification中 response = self.client.post(self.URL,self.DATA,format ='json') 文件」/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3。 6/site-packages/django/test/client.py「,第548行,後 secure = secure,** extra) 文件」/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site- packages/django/test/client.py「,第350行,後 secure = secure,**額外) 文件」/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/ test/client.py「,行416,在通用 返回self.request(** r) 文件」/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/test/client py」爲,線501,在請求 six.reraise(* exc_info) 文件「/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/utils/six.py」,第686行,重新調整 增加值 文件「/ Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/core/handlers/exception.py「,第41行,內部爲 response = get_response(request) File」/Users/docdocengineering3/.virtualenvs/docdoc /lib/python3.6/site-packages/django/core/handlers/base.py「,第187行,在_get_response response = self.process_exception_by_middleware(e,請求) 文件」/Users/docdocengineering3/.virtualenvs/docdoc /lib/python3.6/site-packages/django/core/handlers/base.py」,線路185,在_get_response 響應= wrapped_callback(請求,* callback_args,** callback_kwargs) 文件「/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/views/decorators/csrf.py」,第58行,位於wrapped_view中 返回view_func(* args,** kwargs) 文件「/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/views/generic/base.py」,第68行,在視圖中 返回self.dispatch(request,* args, ** kwargs) 文件「/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/utils/decorators.py」,第67行,_wrapper return bound_func(* args,** kwargs) 文件「/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/views/decorators/debug.py」,第76行,在sensitive_post_parameters_wrapper中 返回視圖(request,* args, ** kwargs) 文件「/用戶/ docdocengineering3/.virtualenvs/docdoc/lib中/ python3.6 /站點包/ Django的/ utils的/ decorators.py」 63行,在bound_func 回報FUNC。 得到(self,type(self))(* args2,** kwargs2) 文件「/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/rest_auth/views.py」,行49,在調度 回報超(LoginView,個體經營).dispatch(* ARGS,** kwargs) 文件「/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/rest_framework/views.py 「,第489行,在調度 response = self。handle_exception(exc) 文件「/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/rest_framework/views.py」,第449行,在handle_exception中 self.raise_uncaught_exception(exc) 文件「/用戶/ docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/rest_framework/views.py「,第486行,在調度 response = handler(request,* args,** kwargs) File」/ Users /docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/rest_auth/views.py「,第92行,後 self.serializer.is_valid(raise_exception = True) 文件」/ Users/docdocengineering3 /。 virtualenvs/docdoc/lib/python3.6/site-packages/rest_framework/serializers.py「,第237行,在is_valid中 self._validated_data = self.run_validation(self.initial_data) 文件「/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/rest_framework/serializers.py」,第435行,在run_validation中 value = self.validate(value) File「/ Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/rest_auth/serializers.py「,第105行,驗證 email_address = user.emailaddress_set.get(email = user.email) File」/ Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/db/models/manager.py「,第85行,在manager_method中 return getattr(self.get_queryset(),name)(* args,* * kwargs) 文件「/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/db/models/query.py」,行380,在獲得 self.model._meta.object_name Excep電子郵件地址匹配查詢不存在。

我不知道爲什麼會發生這種情況。這不是一個設置問題,因爲我實際上已經嘗試運行系統中,創建一個用戶(未驗證),當我「郵差」同一個鏈接,我得到正確的錯誤回到

{"non_field_errors": [ "E-mail is not verified." ] } 

所以它的工作原理在實際產品中,而不是在測試時。有人知道爲什麼任何幫助是極大的讚賞。

這是我無法工作的唯一測試,其餘所有工作都正常運行。

回答

0

您可能已將您的設置EMAIL_VERIFICATION設置爲mandatory

讓你無論是在測試中,它更改爲none或手動創建EmailAddress對象(必須由Django的allauth時強制檢定是)