Python でいくつかの単体テストを作成し、MagicMock を使用して、JSON 文字列を入力として受け入れるメソッドをモックアウトします。私の単体テストでは、指定された引数で呼び出されることをアサートしたいのですが、文字列の assert ステートメントのほかに、dict 内のオブジェクトの順序は重要ではないため、assert ステートメントで問題が発生します。以下で達成しようとしていることの単純化された例。
mock_funct = MagicMock()
# mocked function called elsewhere
expected = {"a":"a", "b":"b"}
mock_funct.assert_called_once_with(json.dumps(expected))
上記は、json にダンプされるときの dict 内のキーの任意の順序により、合格または失敗する可能性があります。つまり、'{"a":"a", "b":"b"}'
との両方'{"b":"b", "a":"a"}'
が有効なダンプですが、一方は失敗し、もう一方は合格します。どちらかが通過します。