在bazel规则中使用“expect_exception”属性,而不是“expect_failure”属性。这个新属性可以指定预期的异常类型,以及当出现该异常时是否应该停止构建。
例如,在以下的Python规则中,我们可以使用“expect_exception”属性来指定是否应该出现“ZeroDivisionError”异常:
py_test(
name = "my_test",
srcs = ["my_test.py"],
deps = ["//my_lib"],
expect_exception = "ZeroDivisionError",
fail_fast = True,
)
这个规则执行“my_test.py”文件中的单元测试。如果测试中出现“ZeroDivisionError”异常,构建过程会停止并返回非零退出码。如果没有出现异常,则返回零退出码。注意,我们还可以使用“fail_fast”属性来指定是否应该停止后续测试的执行。
总之,使用“expect_exception”属性代替“expect_failure”属性可以更好地控制规则的异常处理并提高构建的稳定性。