diff --git a/rest_framework/test.py b/rest_framework/test.py index 690303fbf..a919f989d 100644 --- a/rest_framework/test.py +++ b/rest_framework/test.py @@ -150,6 +150,8 @@ class APIRequestFactory(DjangoRequestFactory): """ Encode the data returning a two tuple of (bytes, content_type) """ + if data is None: + return (b'', content_type) assert format is None or content_type is None, ( 'You may not set both `format` and `content_type`.' @@ -161,9 +163,6 @@ class APIRequestFactory(DjangoRequestFactory): except AttributeError: pass - if data is None: - data = '' - # Content type specified explicitly, treat data as a raw bytestring ret = force_bytes(data, settings.DEFAULT_CHARSET) @@ -181,6 +180,7 @@ class APIRequestFactory(DjangoRequestFactory): # Use format and render the data into a bytestring renderer = self.renderer_classes[format]() + ret = renderer.render(data) # Determine the content-type header from the renderer content_type = renderer.media_type @@ -189,14 +189,9 @@ class APIRequestFactory(DjangoRequestFactory): content_type, renderer.charset ) - if data is None: - ret = '' - else: - ret = renderer.render(data) - - # Coerce text to bytes if required. - if isinstance(ret, str) and renderer.charset: - ret = ret.encode(renderer.charset) + # Coerce text to bytes if required. + if isinstance(ret, str): + ret = ret.encode(renderer.charset) return ret, content_type