Ich versuche Tests für das Django Rest Framework zu implementieren. Die meisten meiner Tests bestanden und die Einrichtung ging glatt, aber ich habe jetzt ein Problem, wo ein assertEqual
nie erfolgreich ist, weil es JSON mit einem OrderedDict vergleicht.DRF-Test: anstelle von JSON wird ein OrderedDict zurückgegeben
Ich habe keine Ahnung, woher das OrderedDict stammt seit DRF sollte nur JSON zurückgeben (richtig?).
Ist es möglich, dass die Testumgebung den JSON vor dem Vergleich analysiert? Das wäre scheiße.
Ich mache einen integrierten Test, der nur die Daten in der Antwort einer GET-Anfrage auf eine bestimmte Ressource testet, ich mache dies basierend auf JSON-Fixtures. Ich teste keine bestimmte Komponente des REST-Frameworks, da meine Implementierungen der Komponenten so einfach sind, dass sie bereits von den Tests im DRF-Projekt getestet wurden.
Wie auch immer, ich hoffe, jemand kann mir helfen!
Sie müssen genauer sein. Ein Serializer ist dafür zuständig, Ihre Daten in ein Wörterbuch zu konvertieren, und der Renderer wandelt diesen in JSON um. Welches Bit genau testen Sie? –
Editiert es! Ich habe mein Problem bereits gelöst, ich hatte ein Problem in meinen Einbauten.Aber ich bin immer noch neugierig, warum es ein OrderedDict mit JSON und nicht JSON mit JSON vergleicht, also antworte bitte, wenn du Zeit hast :) – ZvL
Wenn du die Reihenfolge der Schlüssel in deiner Antwort JSON sicherstellen musst, dann kannst du OrderedDict verwenden komponiere deine Antwort. Sobald es durch die Tür und draußen in der Wildnis kommt, wird es zu einem einfachen JSON mit Schlüsseln in einer bestimmten Reihenfolge. Da Sie die Django-Testinfrastruktur verwenden, kommt Ihre Antwort nicht durch die Tür, sondern wird stattdessen in Ihren Testfall zurückgegeben, um von Ihnen inspiziert zu werden. Ein solches Verhalten ermöglicht es, ein Dict (JSON) im Vergleich zu einem OrderedDict zu testen. Normalerweise sollte das kein Problem sein: Einfach auf die einzelnen Tasten achten. – Roba