TFF には、ゴールデンテストの記述と管理を簡単に行えるようにする golden
という小さなライブラリが含まれています。
ゴールデンテストとは?いつ使用しますか?
ゴールデンテストは、開発者に、コードによって関数の出力が変化したことを知らせるときに使用します。これらのテストは、明確に文書化されたプロパティの特定のセットをテストするのではなく、関数の正確な出力について約束するという点で、優れたユニットテストの多くの特性と異なります。ゴールデン出力の変化が「期待」されるものなのか、ゴールデンテストが適用しようとするプロパティを違反しているものなのかが明確でないことがあります。そのため、十分な結果を生み出すユニットテストの方がゴールデンテストよりも好ましいのが通例です。
ただし、ゴールデンテストは、エラーメッセージ、診断、または生成されたコードの実際のコンテンツを検証する際に非常に役立つことがあります。こういった場合には、ゴールデンテストは、生成された出力への変更が「正しく見える」ことを確認するのに役立つ信頼性チェックになります。
golden
を使ってテストを記述するには?
golden
ライブラリへの主なエントリーポイントは golden.check_string(filename, value)
です。再度のパス要素が filename
であるファイルのコンテンツに対して、value
文字列がチェックされます。filename
へのフルパスは、コマンドラインの --golden <path_to_file>
引数で指定されている必要がありアンス。同様に、これらのファイルは、py_test
BUILD ルールの data
引数を使用して、テストに公開されている必要があります。該当する正しい相対パスを生成するには location
関数を使用してください。
py_string_test(
...
args = [
"--golden",
"$(location path/to/first_test_output.expected)",
...
"--golden",
"$(location path/to/last_test_output.expected)",
],
data = [
"path/to/first_test_output.expected",
...
"path/to/last_test_output.expected",
],
...
)
慣例により、ゴールデンファイルはテストターゲットと同じ名前で _goldens
という接尾辞を使用して、兄弟ディレクトリに配置されます。
path/
to/
some_test.py
some_test_goldens/
test_case_one.expected
...
test_case_last.expected
.expected
ファイルを更新するには?
.expected
ファイルは、影響のあるテストターゲットを引数 --test_arg=--update_goldens --test_strategy=local
で実行することで更新できます。生成される差分について、予期しない変更がないかをチェックする必要があります。