python - DRF Response content-type set to None during tests -


i'm using django rest framework (version 3.6.2) create rest api. i've defined viewset inherits genericviewset , have overriden retrieve method implement custom behaviour.

class fooviewset(viewsets.genericviewset):     serializer_class = fooserializer      def retrieve(self, request, *args, **kwargs):         ...          serializer = self.get_serializer(data)         return response(serializer.data) 

i want have browsableapi while accessing endpoint browser , receive json response when accessing endpoint e.g. code. i've configured drf following settings:

    rest_framework = {     'default_renderer_classes': (         'rest_framework.renderers.jsonrenderer',         'rest_framework.renderers.browsableapirenderer',     ),     'test_request_renderer_classes': (         'rest_framework.renderers.jsonrenderer',     ),     'test_request_default_format':'json' } 

everything works expected, can access browsable api browser , when making request postman tool json response. unfortunately, can't achieve same result during tests.

class getfoodetailviewtest(apitestcase):      def test_get_should_return_json(self):         response = self.client.get(self.view_url)         self.assertequal(response.content_type, "application/json") 

i expect response have content_type set application/json (this header can see in responses browser , postman). test fails - response.content_type set none. while debugging test, i've discovered response._headers dictionary looks this

{     'vary': ('vary', 'cookie'),     'x-frame-options': ('x-frame-options', 'sameorigin'),     'content-type': ('content-type', 'application/json'),     'allow': ('allow', 'get, put, delete, options') } 

so seems correct header being set, it's not getting populated content_type attribute. missing something?

this how test content type. in few cases code decides content-type itself, check personally did not wrong. drf code tested.

self.assertequal("application/json", resp['content-type']) 

you have rely on drf doing right, not can or need test. example, don't test drf parsed json body correctly. test server isn't real one, pretty close. example, real objects out of response.data, not json encoded/decoded ones.

check out liveservertestcase if need it, slower.


Comments

Popular posts from this blog

PHP and MySQL WP -

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

go - golang pprof for c library code -