在Bazel中,可以使用py_test
规则来定义Python测试,并且可以在测试过程中定义输出方法。以下是一个示例解决方案:
在BUILD文件中,定义一个py_test
规则,并使用test_main
参数指定测试的入口点。在args
参数中,可以使用--test_output=all
指定输出所有测试结果的详细信息。
load("@rules_python//python:defs.bzl", "py_test")
py_test(
name = "test_my_module",
srcs = ["my_module_test.py"],
main = "my_module_test.py",
args = ["--test_output=all"],
)
在my_module_test.py
中,可以使用print
语句将结果输出到控制台或日志文件中。以下是一个示例:
import unittest
class MyModuleTest(unittest.TestCase):
def test_something(self):
result = 42
print("My test result:", result)
self.assertEqual(result, 42)
if __name__ == "__main__":
unittest.main()
当运行bazel test
命令时,Bazel将执行测试并将结果输出到控制台。例如:
$ bazel test //path/to/test:my_module_test
INFO: Found 1 test target...
INFO: Elapsed time: 0.959s, Critical Path: 0.00s
INFO: 1 process: 1 internal.
INFO: Build completed successfully, 2 total actions
//path/to/test:my_module_test PASSED in 0.6s
Executed 1 out of 1 test: 1 test passes.
INFO: Build completed successfully, 2 total actions
在控制台上,你还可以看到测试结果的详细信息,包括每个测试的名称和状态。
上一篇:Bazel和类的可见性