Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
tensorflow
GitHub Repository: tensorflow/docs-l10n
Path: blob/master/site/zh-cn/federated/golden_tests.md
25115 views

黄金测试

TFF 包含一个名为 golden 的小型库,有助于轻松编写和维护黄金测试。

什么是黄金测试?我应当何时使用它们?

当您希望开发者知道他们的代码更改了函数的输出时,可以使用黄金测试。黄金测试违反了良好单元测试的许多特征,因为它们对函数的确切输出做出了承诺,而不是测试一组特定的清晰、记录完善的属性。有时候不清楚对黄金输出的更改何时是“预期的”,或者更改是否违反了黄金测试试图强制执行的某些属性。因此,构造良好的单元测试通常比黄金测试更可取。

但是,在验证错误消息、诊断或已生成代码的确切内容时,黄金测试极为有用。在这些情况下,黄金测试可以是一种有帮助的信心检查,目的是确认对所生成输出的任何更改“看起来正确”。

我应当如何使用 golden 编写测试?

golden.check_string(filename, value)golden 库的主要入口点。它将根据最后一个路径元素为 filename 的文件的内容检查 value 字符串。必须通过命令行 --golden <path_to_file> 参数提供 filename 的完整路径。同样,必须使用 py_test 构建规则的 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 文件?

可以通过使用参数 --test_arg=--update_goldens --test_strategy=local 运行受影响的测试目标来更新 .expected 文件。应检查由此产生的差异是否存在意外的变化。