2012-03-26 11 views
1

Zu diesem doctest:Python doctest Zeichenfolge zu entkommen Ausgabe

r''' 
>>> uuid_hex_to_binary('8ed2d35f-2911-4c10-ad68-587c96b4686e') 
'\x8e\xd2\xd3\x5f\x29\x11\x4c\x10\xad\x68\x58\x7c\x96\xb4\x68\x6e' 
''' 

Ich erhalte dieses Ergebnis:

Failed example: 
    uuid_hex_to_binary('8ed2d35f-2911-4c10-ad68-587c96b4686e') 
Expected: 
    '\x8e\xd2\xd3\x5f\x29\x11\x4c\x10\xad\x68\x58\x7c\x96\xb4\x68\x6e' 
Got: 
    '\x8e\xd2\xd3_)\x11L\x10\xadhX|\x96\xb4hn' 

Der Test bestehen sollte, weil die Saiten gleichwertig sind. In der Zeichenfolge "Got:" hat es jedoch einige der \xHH-Escapes in die entsprechenden ASCII-Zeichen konvertiert, dies wurde jedoch für die Zeichenfolge "Expected:" nicht ausgeführt.

Wenn ich r''' zu ''' bei Betteln des docstring ändern, erhalte ich diese stattdessen:

Failed example: 
    uuid_hex_to_binary('8ed2d35f-2911-4c10-ad68-587c96b4686e') 
Expected: 
    '???_)L?hX|??hn' 
Got: 
    '\x8e\xd2\xd3_)\x11L\x10\xadhX|\x96\xb4hn' 

Wie kann ich die beiden Strings in doctest passen bekommen?

Antwort

0

Bedenken Sie:

>>> '\x8e\xd2\xd3\x5f\x29\x11\x4c\x10\xad\x68\x58\x7c\x96\xb4\x68\x6e' 
'\x8e\xd2\xd3_)\x11L\x10\xadhX|\x96\xb4hn' 

Charaktere wie '\x5f' ('_') haben druckbaren ASCII-Werte, also im repr() Anruf sie auf die kurze Form umgewandelt zu bekommen. Dies ist nicht das, was Sie wollen, also wenn Sie es mit der Vollversion vergleichen möchten, benötigen Sie etwas wie

>>> uuid_hex_to_binary('8ed2d35f-2911-4c10-ad68-587c96b4686e') == \ 
... '\x8e\xd2\xd3\x5f\x29\x11\x4c\x10\xad\x68\x58\x7c\x96\xb4\x68\x6e' 
True 
0

Hoppla, ich habe es 10 Sekunden nach meiner Anfrage herausgefunden. Ich habe es wie folgt arbeiten:

r''' 
>>> a = uuid_hex_to_binary('8ed2d35f-2911-4c10-ad68-587c96b4686e') 
>>> b = '\x8e\xd2\xd3\x5f\x29\x11\x4c\x10\xad\x68\x58\x7c\x96\xb4\x68\x6e' 
>>> a == b 
True 
''' 
Verwandte Themen