2017-03-23 5 views
0

내보기마다 브라우저의 요청 언어 코드를 반환하는 기능이 있습니다.언어 요청을 무시할 수있는 방법

applications\emplois\views.py:74: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <applications.emplois.views.IndexView object at 0x0000000006270048> 

    def language(self): 
     """Return the user default language""" 
>  language = language_set(self.request.LANGUAGE_CODE) 
E  AttributeError: 'WSGIRequest' object has no attribute 'LANGUAGE_CODE' 

applications\emplois\views.py:64: AttributeError 
---------------------------- Captured stdout setup ---------------------------- 
Creating test database for alias 'default'... 
=================== 1 failed, 11 deselected in 5.97 seconds =================== 

views.py

def language_set(language): 
    if "-" in language: 
     return (language.split('-')[1]).upper() 
    else: 
     return language.upper() 

class IndexView(generic.ListView): 
    """ 
    this is the ROOT page 
    return a list of Jobs 
    """ 
    template_name='emplois/index.html' 
    context_object_name='latest_jobs_list' 
    paginate_by = 10 

    def language(self): 
     """Return the user default language""" 
     language = language_set(self.request.LANGUAGE_CODE) 
     language = language.upper() 
     return language 

    def get_queryset(self): 
     """ 
     Return a list of Jobs that have an EXPIRATION DATE 
     greater than Now() and a default Language 
     """ 
     #import ipdb;ipdb.set_trace() 
     return Job.objects.filter(language=self.language(),\ 
       EXPIRYDATE__gt=datetime.now())\ 
      .order_by('EXPIRYDATE') 

테스트 : 나는 돈 때문에 나는 언어의 요청을 무시할 수있는 방법

import pytest 
from django.core import mail 
from django.contrib.auth.models import AnonymousUser 
from django.http import Http404 
from django.test import RequestFactory 
from mock import patch 
from mixer.backend.django import mixer 
pytestmark = pytest.mark.django_db 

from applications.emplois import views 


class TestIndexView: 
    def test_anonymous(self): 
     req = RequestFactory().get('/') 
     resp = views.IndexView.as_view()(req) 
     assert resp.status_code == 200, 'Should be callable by anyone' 

'내 유닛 테스트에 내 의견을 실행할 때 나는 오류가 브라우저를 사용하지 마십시오.

답변

1

RequestFactory을 사용할 때 요청 매개 변수를 지정할 수 있습니다. 이 경우 request.LANGUAGE_CODE을 찾고 있으므로 해결책은 을 테스트의 RequestFactory에 설정하는 것입니다.

RequestFactoryhere에 대한 설명서를 볼 수 있습니다.

그래서 솔루션입니다 :

def test_anonymous(self): 
    req = RequestFactory().get('/') 

    # Here is the change. 
    req.LANGUAGE_CODE = "en" 

    resp = views.IndexView.as_view()(req) 
    assert resp.status_code == 200, 'Should be callable by anyone' 
관련 문제