Opened 5 years ago
Last modified 5 years ago
#31378 closed New feature
django.test.utils compare_xml assumes string, errors on bytes — at Initial Version
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
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 (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
.