如何在bazel中实现回归测试?

如何在bazel中实现回归测试?,bazel,Bazel,我有以下测试目标: block_test ( name = "full_test", block = ":block_name" ... params = { "PARAM1" : 1, "PARAM2" : 2, "PARAM3" : 3 } ) 我有一个结构,它定义了每个参数的可能值: params_options = { "param1" : [1, 2, 34], "param2"

我有以下测试目标:

block_test (
    name = "full_test",
    block = ":block_name"
    ...
    params = {
        "PARAM1" : 1,
        "PARAM2" : 2,
        "PARAM3" : 3
    }
)
我有一个结构,它定义了每个参数的可能值:

params_options = {
    "param1" : [1, 2, 34],
    "param2" : [43, 2 ,54],
    "param3" : [3, 5, 6]
}
我希望有一个单一的目标,可以为每个可能的参数组合运行类似于
block_test
的目标

我考虑通过创建一个宏来实现这一点,该宏将为每个可能的参数组合声明一个目标,最后是一个依赖于这些目标的测试目标

有没有更好的办法?可能有数千种组合,因此:

  • 我担心在查询构建时会弄得一团糟
  • 就内存利用率而言,这恐怕不是很有效

  • 您可以使用列表理解为每组参数生成一个
    block_测试

    [block_test (
        name = "full_test",
        block = ":block_name"
        ...
        params = p
    ) for p in [
        {1, 2, 34},
        {43, 2 ,54},
        {3, 5, 6},
    ]]
    

    您可以使用列表理解为每组参数生成一个
    block_测试

    [block_test (
        name = "full_test",
        block = ":block_name"
        ...
        params = p
    ) for p in [
        {1, 2, 34},
        {43, 2 ,54},
        {3, 5, 6},
    ]]
    

    这和使用宏不一样吗?此外,生成的规则将有冲突的名称,并且我不会得到一个可以用来调用所有测试的单一目标。这两个问题都可以用稍微复杂一点的宏来解决,但这有点忽略了我的问题。这和使用宏不一样吗?此外,生成的规则将有冲突的名称,并且我不会得到一个可以用来调用所有测试的单一目标。这两个问题都可以用更复杂的宏来解决,但这有点忽略了我的问题。我刚刚找到了这个特性。这并不能解决我在没有宏的情况下创建所有测试的问题,但如果这是我的任务,它可以让我将测试分组并在单个目标下执行。我只是找到了这个功能。这并不能解决我在没有宏的情况下创建所有测试的问题,但是如果这是我的任务,它允许我将测试分组并在单个目标下执行它们。