#31378: django.test.utils compare_xml assumes string, errors on bytes
---------------------------------------------+------------------------
Reporter: Joe Germuska | Owner: nobody
Type: Uncategorized | Status: new
Component: Testing framework | Version: master
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
---------------------------------------------+------------------------
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
[https://github.com/django/django/blob/ba4389a36b5fb1afce0cddb4e28233138b6612b7/django/test/utils.py#L586-L587
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`.
--
Ticket URL: <https://code.djangoproject.com/ticket/31378>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/054.45fc5a5c07073212b2a50156b64d9686%40djangoproject.com.