django: test des vues POST-basées avec des objets json
J'ai une application django avec plusieurs vues qui acceptent les objets json via des requêtes POST. Les objets json sont moyennement complexes avec quelques couches d'imbrication, donc j'utilise la bibliothèque json pour analyser raw_post_data, comme indiqué ici:
def handle_ajax_call(request):
    post_json = json.loads(request.raw_post_data)
    ... (do stuff with json query)
Ensuite, je veux écrire des tests pour ces vues. Malheureusement, je ne peux pas comprendre comment passer l'objet json au Client. Voici une version la plus simple de mon code:
def test_ajax_call(self):
    c = Client()
    call_command('loadfixtures', 'temp-fixtures-1') #Custom command to populate the DB
    J = {
      some_info : {
        attr1 : "AAAA",
        attr2 : "BBBB",
        list_attr : [ "x", "y", "z" ]
      },
      more_info : { ... },
      info_list : [ 1, 22, 23, 24, 5, 26, 7 ]
    }
    J_string = json.dumps(J)
    response = c.post('/ajax/call/', data=J_string )
Lorsque j'exécute le test, il échoue avec:
AttributeError: 'str' object has no attribute 'items'
Comment puis-je passer l'objet JSON dans le Client.méthode post?
24
                
            
                demandé sur
                Abe
                2012-08-03 23:45:09
            
        1 réponses
response = c.post('/ajax/call/', content_type='application/json', data=J_string)
50
	                    
	                
	                    répondu
	                    Daniel Roseman
	                    2012-08-03 20:13:51