2017-05-06 1 views
0

Ich versuche, einen HTML-Bericht für meine Einheit Test Script zu erstellen, Wenn ich versuche, den Code auszuführen, es wirft, dieser Fehler AttributeError: 'str' object has no attribute 'decode'Attribute: ‚str‘ Objekt hat kein Attribut ‚decode‘ Latin-1

Unten ist der Teil des Codes, wo es Fehler zeigt: -

if isinstance(o,str): 
    # TODO: some problem with 'string_escape': it escape \n and mess up formating 
    # uo = unicode(o.encode('string_escape')) 
    uo = o.decode('latin-1') 
else: 
    uo = o 
if isinstance(e,str): 
    # TODO: some problem with 'string_escape': it escape \n and mess up formating 
    # ue = unicode(e.encode('string_escape')) 
    ue = e.decode('latin-1') 
else: 
    ue = e 

script = self.REPORT_TEST_OUTPUT_TMPL % dict(
    id = tid, 
    output = saxutils.escape(uo+ue), 
) 

der obige Code ist aus HTMLTestRunner.py Datei. Bitte helfen Sie dieses Problem zu debuggen.

+0

richtige Methode ist –

Antwort

2

Ich nehme an, Sie verwenden python3 (wegen des Tags in Ihrer Frage)

In python3 gibt es nicht mehr ein unicode Typ, es ist einfach str-str ein Texttyp ist, die bereits dekodiert Unicode ist, Daher gibt es keine decode Methode für str.

Für Arbeiten mit Zeichenketten gibt es die bytes Typ, der eine decode Methode hat (decode -ing bytes Rückkehr str und encode -ing str kehrt bytes

von nun an also -. Statt decode zu verwenden, wenn die Typ ist str, verwenden decode nur, wenn der Typ bytes ist

Code Bedeutung sollte wie folgt aussehen:.

if isinstance(o,bytes): 
    uo = o.decode('latin-1') 
else: 
    uo = o 
if isinstance(e,bytes): 
    ue = e.decode('latin-1') 
else: 
    ue = e 

script = self.REPORT_TEST_OUTPUT_TMPL % dict(
    id = tid, 
    output = saxutils.escape(uo+ue), 
) 
+0

Dank für die Hilfe bei Dean nicht kodieren dekodieren nach dem Ändern es „Bytes“ zu, ich bin vor Fehlern, in einen der Linie "self.stream.write (output.encode ('utf8 ')) ", es heißt, dass" TypeError: write() Argument muss str sein, nicht Bytes "Bitte helfen Sie mir in, wie Sie diesen Fehler korrigieren – Santosh

+0

@Santosh - Auf welcher Linie? Es passiert wahrscheinlich nach diesem Codeblock, wenn der Bericht in eine Datei geschrieben wird. (Es erwartet einen offenen Dampf mit 'wb' anstelle von' w') –

+0

Danke Dean, es begann jetzt zu arbeiten .. :) – Santosh

Verwandte Themen