unittest.TestCase
hat eine assertCountEqual
Methode ( assertItemsEqual
in Python 2, was wohl ein besserer Name ist), der zwei iterable vergleicht und prüft, dass sie die gleiche Anzahl der gleichen Objekte enthalten, ohne Rücksicht auf ihre Reihenfolge.
Bietet Pytest etwas ähnliches? Alle offensichtlichen Alternativen (zB Aufruf von set(x)
, sorted(x)
oder Counter(list(x))
auf jeder Seite, wie in der Dokumentation erwähnt) funktionieren nicht, da die Dinge, die ich vergleiche, Listen von Wörterbüchern sind und Wörterbücher nicht waschbar.
pytest liefert kein assertCountEqual
, aber wir können einfach nur unitest verwenden :
Und die Ausgabe ist auch anständig
%Vor% Randnotiz: die Implementierung von assertCountEqual
enthält für einen Zweig speziell für nicht hashbare Typen Tut ein paar Bücher und vergleicht jedes Element mit jedem anderen Element .