2016-03-22 6 views
2

Ich versuche einen Belastungstest für Django-basierte Website zu machen.Korrekter POST-Datei-Upload (Belastungstest mit Locust)

verwende ich Locust 0.7.3 und Python 2.7.10

Hier mache ich POST - das Formular ausfüllen und eine Datei Befestigung:

class WebsiteTasks(TaskSet): 
    def on_start(self): 
     self.client.get("/") 

    @task 
    def submit(self): 
     response = self.client.get("/submit/") 
     csrftoken = response.cookies['csrftoken'] 
     attach = open('file.pdf', 'rb') 

     r = self.client.post("/submit/", { 
      'csrfmiddlewaretoken': csrftoken, 
      'password': smart_str(u'wkefjgui'), 
      'payload': smart_str(u'kjsdgfljdsh'), 
      'docfile': attach, 
      'commit': smart_str(u'Вкрапить/Embed'), 
     }) 

Alles schien in Ordnung zu sein, aber auf dem Upload-Server Ordner gibt es keine Datei!

Was mache ich falsch?

Antwort

2

Nun, fand ich die Lösung, und ich hoffe, dass es für jemanden nützlich sein wird:

Hier wurde beschrieben, wie Django behandelt Datei: How to send a "multipart/form-data" with requests in python?

Und Rezept ‚Dateien‘ param in Post-Funktion zu definieren, :

r = self.client.post("/submit/", data={ 
     'csrfmiddlewaretoken': csrftoken, 
     'password': smart_str(u'wkefjgui'), 
     'payload': smart_str(u'kjsdgfljdsh'), 
     'commit': smart_str(u'Вкрапить/Embed'), 
     }, files={'docfile': attach})