Opened 4 years ago

Last modified 4 years ago

#31378 closed New feature

django.test.utils compare_xml assumes string, errors on bytes — at Version 1

Reported by: Joe Germuska Owned by: nobody
Component: Testing framework Version: dev
Severity: Normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Joe Germuska)

In writing a test case, I found that passing the test client's response.content object into TestCase.assertXMLEqual() resulted in this error: a bytes-like object is required, not 'str'

In tracing the code, this originates from django.test.utils.compare_xml, where string literals \\n and \n are passed to replace() even though the types of want and got (particularly got) may be bytes and not str.

The workaround is to decode the response content before calling assertXMLEqual (response.content.decode('utf-8')) and to pass the assertion comparison ("want") also as a string, but if this method is going to be used in the testing framework, it seems that it should tolerate directly passing in response.content, even if that's a bytes.

Change History (1)

comment:1 by Joe Germuska, 4 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.
Back to Top