単体テストでランダムデータを生成することは一般的に悪い考えだと読みました(そしてその理由は理解しています)が、ランダムデータでテストしてから、バグを発見したランダムテストから固定ユニットテストケースを構築するのは良いことのようです。しかし、うまく整理する方法がわかりません。私の質問は、実際には特定のプログラミング言語や特定の単体テストフレームワークに関連していないため、Pythonといくつかの疑似単体テストフレームワークを使用します。これが私がそれをコーディングする方法です:
def random_test_cases():
datasets = [
dataset1,
dataset2,
...
datasetn
]
for dataset in datasets:
assertTrue(...)
assertEquals(...)
assertRaises(...)
# and so on
問題は、このテストケースが失敗すると、どのデータセットが失敗の原因であるかを特定できないことです。私はそれを解決する2つの方法を見ます:
- データセットごとに1つのテストケースを作成します—問題はテストケースの負荷とコードの重複です。
- 通常、テストフレームワークでは、関数をアサートするためのメッセージを渡すことができます(私の例では、次のようなことができます
assertTrue(..., message = str(dataset))
)。問題は、そのようなメッセージを各アサートに渡す必要があることです。これもエレガントに見えません。
それを行うためのより簡単な方法はありますか?