以下の関数があるとします。
def f(x):
"""
Turns x into a set.
>>> given_x = ['a', 'b', 'c', 'd', 'e', 'f']
>>> f(given_x)
{'a', 'b', 'c', 'd', 'e', 'f'}
"""
return set(x)
doctest を実行すると、(通常) 次のような結果になります。
Failure
**********************************************************************
File "/home/black/Dev/exp_2.py", line 6, in f
Failed example:
f(given_x)
Expected:
{'a', 'b', 'c', 'd', 'e', 'f'}
Got:
{'d', 'e', 'f', 'c', 'a', 'b'}
関数が期待どおりに動作するため、明らかにこの失敗は発生するべきではありませんでしたが、結果が順序付けされていないために発生しました。
私の実際の関数の出力は、これよりもはるかに複雑になる可能性があります。内部に辞書、セット、リストを含む辞書である可能性があります。
一般的な解決策が必要です (ある場合)。sort()
提示された例だけでは、実際の問題は解決しません。
質問:
順不同の出力が関係している場合に、doctest が (誤って) 失敗するのを防ぐにはどうすればよいですか?