[dango] Fehler bei Test

Django, Flask, Bottle, WSGI, CGI…
Antworten
SeBu
User
Beiträge: 16
Registriert: Samstag 4. Januar 2014, 11:36

Hallo,

ich kann mir irgendwie keinen Reim darauf machen, wo genau der Fehler liegen könnte. Im setup habe ich:

Code: Alles auswählen

def setUp(self):
    self.playthrough = Playthrough.objects.create(mission=self.mission) # ForeignKey
    self.mission = Mission.objects.create(title="Waldabenteuer")
    self.private_mission = Mission.objects.create(title="Unter Wasser", private=True) 

Code: Alles auswählen

        response = self.api_post(data2) # Wechselt die Mission von "self.mission" zu "self.private_mission"
        # Klappt:
        self.assertEqual(Playthrough.objects.all()[0].mission, self.private_mission)
        # Klappt:
        self.assertEqual(Playthrough.objects.all()[0], self.playthrough)
        # Schlägt fehl:
        self.assertEqual(self.playthrough.mission, self.private_mission)
Ich habe auch schon mit pdb geschaut und es wird in der Datenbank alles richtig gespeichert.
Meine Gedanken dazu (Und hoffentlich gleich eine Erklärung von euch, wo der Fehler liegt 😅):
- Wenn es doch das gleiche Objekt ist, warum schlägt dann der 3. Test fehl? 🤨
- Wenn es eine Kopie und keine Refernz wäre, müsste ja der 2. Test fehlschlagen, oder nicht?🤔
Benutzeravatar
sparrow
User
Beiträge: 4509
Registriert: Freitag 17. April 2009, 10:28

Lass dir doch mal im Test ausgeben, wann was welchen Wert hat. Da brauchst du doch keinen Debugger für.

Und die Reihenfolge mit der du die Elemente in SetUp anlegst, halte ich für bedenklich. Wo kommt denn self.mission in der ersten Zeile der Funktion her?
SeBu
User
Beiträge: 16
Registriert: Samstag 4. Januar 2014, 11:36

OK, hab meinen Fehler gefunden: Ich dachte, es aktualisiert automatisch, aber ich musste noch

Code: Alles auswählen

self.playthrough.refresh_from_db() 
ausführen. 🙈
sparrow hat geschrieben: Montag 1. November 2021, 12:03 Und die Reihenfolge mit der du die Elemente in SetUp anlegst, halte ich für bedenklich. Wo kommt denn self.mission in der ersten Zeile der Funktion her?
Das war nur versehentlich falsch kopiert, die Zeile gehört natürlich ganz unten hin.
Antworten