Bazel 有没有办法改进starlark';单元测试错误报告?

Bazel 有没有办法改进starlark';单元测试错误报告?,bazel,starlark,Bazel,Starlark,我正在根据为我的项目编写分析时间测试,我想知道报告失败的最有用的方法是什么 使用unittest.bzl模块,我使用了asserts.equals、asserts.true等,并发现日志中的错误报告有所欠缺。例如,如果一个断言.true失败,则错误消息为预期条件为true,但为false,没有提及哪一行或预期条件为true。在一个包含大量测试的文件中,这不是很有用!我知道可以将消息作为参数添加到这些断言中,但是为每个断言定制消息也不理想。有没有办法得到断言失败所导致的回溯?或者以任何其他方式访问

我正在根据为我的项目编写分析时间测试,我想知道报告失败的最有用的方法是什么

使用
unittest.bzl
模块,我使用了
asserts.equals
asserts.true
等,并发现日志中的错误报告有所欠缺。例如,如果一个
断言.true
失败,则错误消息为
预期条件为true,但为false
,没有提及哪一行或预期条件为true。在一个包含大量测试的文件中,这不是很有用!我知道可以将消息作为参数添加到这些断言中,但是为每个断言定制消息也不理想。有没有办法得到断言失败所导致的回溯?或者以任何其他方式访问断言失败的行号/详细信息?

我从您的链接中获取,并将Skylib版本添加到新的工作区。然后,我更改了
\u provider\u contents\u test\u impl
中的预期值,使测试失败

下面是完整的输出,请注意
DEBUG
,其中包含许多有用的信息(文件、行、期望值、实际值)

还支持回溯,请参见示例

实际值)

还支持回溯,请参见示例

请注意,
asserts.equals
将在出现故障时打印实际值,但
asserts.true
不会-但您可以通过使用
asserts.equals(env,true,test_val,msg)
轻松解决此问题。

我从您的链接中选择了,并将Skylib版本添加到了一个新的工作区。然后,我更改了
\u provider\u contents\u test\u impl
中的预期值,使测试失败

下面是完整的输出,请注意
DEBUG
,其中包含许多有用的信息(文件、行、期望值、实际值)

还支持回溯,请参见示例

实际值)

还支持回溯,请参见示例

请注意,
asserts.equals
将在出现故障时打印实际值,但
asserts.true
不会打印实际值-但您可以使用
asserts.equals(env,true,test_val,msg)
轻松解决此问题

$ bazel test //mypkg:myrules_test                                             
DEBUG: /home/user/.cache/bazel/_bazel_user/863abec759a50d843603ddf033727331/external/bazel_skylib/lib/unittest.bzl:351:10: In test _provider_contents_test_impl from //mypkg:myrules_test.bzl: Expected "some valuexxxxx", but got "some value"
INFO: Analyzed target //mypkg:provider_contents_test (0 packages loaded, 0 targets configured).
INFO: Found 1 test target...
FAIL: //mypkg:provider_contents_test (see /home/user/.cache/bazel/_bazel_user/863abec759a50d843603ddf033727331/execroot/__main__/bazel-out/k8-fastbuild/testlogs/mypkg/provider_contents_test/test.log)
Target //mypkg:provider_contents_test up-to-date:
  bazel-bin/mypkg/provider_contents_test.sh
INFO: Elapsed time: 0.108s, Critical Path: 0.04s
INFO: 2 processes: 2 linux-sandbox.
INFO: Build completed, 1 test FAILED, 2 total actions
//mypkg:provider_contents_test                                           FAILED in 0.0s
  /home/user/.cache/bazel/_bazel_user/863abec759a50d843603ddf033727331/execroot/__main__/bazel-out/k8-fastbuild/testlogs/mypkg/provider_contents_test/test.log

INFO: Build completed, 1 test FAILED, 2 total actions

$ bazel test //mypkg:myrules_test                                             
DEBUG: /home/user/.cache/bazel/_bazel_user/863abec759a50d843603ddf033727331/external/bazel_skylib/lib/unittest.bzl:351:10: In test _provider_contents_test_impl from //mypkg:myrules_test.bzl: Expected "some valuexxxxx", but got "some value"
INFO: Analyzed target //mypkg:provider_contents_test (0 packages loaded, 0 targets configured).
INFO: Found 1 test target...
FAIL: //mypkg:provider_contents_test (see /home/user/.cache/bazel/_bazel_user/863abec759a50d843603ddf033727331/execroot/__main__/bazel-out/k8-fastbuild/testlogs/mypkg/provider_contents_test/test.log)
Target //mypkg:provider_contents_test up-to-date:
  bazel-bin/mypkg/provider_contents_test.sh
INFO: Elapsed time: 0.108s, Critical Path: 0.04s
INFO: 2 processes: 2 linux-sandbox.
INFO: Build completed, 1 test FAILED, 2 total actions
//mypkg:provider_contents_test                                           FAILED in 0.0s
  /home/user/.cache/bazel/_bazel_user/863abec759a50d843603ddf033727331/execroot/__main__/bazel-out/k8-fastbuild/testlogs/mypkg/provider_contents_test/test.log

INFO: Build completed, 1 test FAILED, 2 total actions