AttributeError: can ' T set attribute

Arbeite ich auf einer älteren django-Projekt, gibt es irgendwo eine Klasse wie folgt definiert;

from django.http import HttpResponse

class Response(HttpResponse):
    def __init__(self, template='', calling_context='' status=None):
        self.template = template
        self.calling_context = calling_context
        HttpResponse.__init__(self, get_template(template).render(calling_context), status)

und diese Klasse wird verwendet, um Ansichten wie folgt

def some_view(request):
    #do some stuff
    return Response('some_template.html', RequestContext(request, {'some keys': 'some values'}))

diese Klasse wurde vor allem erstellt, so dass Sie könnte es verwenden, um führen Sie Behauptungen in den unit-tests .ich.e Sie sind nicht mit django.test.AUFTRAGGEBER zur Prüfung der Ansichten, sondern Sie erstellen ein mock-request und übergeben Sie, zu sehen, wie(aufrufen der Ansicht als callable) in die tests wie folgt

def test_for_some_view(self):
    mock_request = create_a_mock_request()
    #call the view, as a function
    response = some_view(mock_request) #returns an instance of the response class above
    self.assertEquals('some_template.html', response.template)
    self.assertEquals({}, response.context)

Das problem ist, dass auf halbem Weg durch die test-suite(ein ziemlich großes test-suite), einige tests beginnen Sprengung, bei der Ausführung der

return Response('some_template.html', RequestContext(request, {'some keys': 'some values'}))

und der stack-trace ist

self.template = template
AttributeError: can't set attribute 

den vollständigen stack-trace sieht so etwas wie

======================================================================
ERROR: test_should_list_all_users_for_that_specific_sales_office
 ----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/austiine/Projects/mped/console/metrics/tests/unit/views/sales_office_views_test.py",   line 106, in test_should_list_all_users_for_that_specific_sales_office
    response = show(request, sales_office_id=sales_office.id)
File "/Users/austiine/Projects/mped/console/metrics/views/sales_office_views.py", line 63, in show
    "sales_office_users": sales_office_users}))
File "/Users/austiine/Projects/mped/console/metrics/utils/response.py", line 9, in __init__
    self.template = template
    AttributeError: can't set attribute

den tatsächlichen fehlerhaften test ist

def test_should_list_all_users_for_that_specific_sales_office(self):
    user_company = CompanyFactory.create()
    request = self.mock_request(user_company)
    #some other stuff

    #calling the view
    response = show(request, sales_office_id=sales_office.id)
    self.assertIn(user, response.calling_context["sales_office_users"])
    self.assertNotIn(user2, response.calling_context["sales_office_users"])

code für die anzeigen

def show(request, sales_office_id):
    user = request.user
    sales_office = []
    sales_office_users = []
    associated_market_names = []
    try:
        sales_office = SalesOffice.objects.get(id=sales_office_id)
        sales_office_users = User.objects.filter(userprofile__sales_office=sales_office)
        associated_market_names = Market.objects.filter(id__in=           (sales_office.associated_markets.all())).values_list("name", flat=True)
        if user.groups.all()[0].name == UserProfile.COMPANY_AO:
            associated_market_names = [market.name for market in sales_office.get_sales_office_user_specific_markets(user)]
        except:
            pass
    return Response("sales_office/show.html", RequestContext(request, {'keys': 'values'}))
Können Sie uns zeigen, den gesamten traceback-Fehlermeldung?
der größte Teil der stack-trace ist nur ein Haufen von absoluten Pfaden für test-Datei, wo der code explodiert, die Ansicht und die eigentliche Datei, wo die exception stammt, dennoch werde ich hier einfügen
Versuchen Sie zu drucken Typ(Vorlage) vor sich selbst.template = Vorlage, und sagen Sie mir die print-info.
print type(Vorlage) gibt <type 'str'> und print type(self).Vorlage) zurück *** AttributeError: 'Antwort' - Objekt hat kein Attribut 'Vorlagen'
Es scheint mir, dass self im Antwort-haben eine nur-lese-Attribut mit dem Namen template. Können Sie nach show() Methode der sales_office_views.py Modul?

InformationsquelleAutor austiine | 2014-12-10

Schreibe einen Kommentar