目前,我有一组测试,希望在主机上的GPU上执行测试。例如,如果机器有3个GPU,我想使用1个GPU、2个GPU和3个GPU来测试这个功能。
我目前的方法(我知道这并不优雅或有效)是有8个测试,每个测试配置为使用从1到8个不等的大量GPU,如果主机没有所需的GPU数量,则每一个测试都将被跳过。
在使用@pytest.mark.parametrize设置8个不同的值作为测试中的GPUs数量的情况下,是否可以只编写一个测试,并将其与跳过测试的工具结合起来,以根据机器的gpus跳过测试?
提前感谢
发布于 2022-09-22 07:10:05
有没有办法只编写一个测试,其中我使用@pytest.mark.parametrize设置了8个不同的值,作为测试中的GPUs数量,并将其与跳过测试的工具结合起来,以根据机器的gpus跳过测试?
这似乎是个过度并发症?
为什么不检查一下图层的GPU数量,并创建一个从一个到那个数字的参数化呢?例如:
GPU_COUNT = get_number_of_gpus()
@pytest.mark.parametrize('gpus', range(GPU_COUNT))
def test_thing_gpu(gpus):
...另外,skipif是一个静态条件,它在模块本身的计算过程中执行,并接受布尔条件而不是函数。
如果要根据运行时条件跳过,则需要从测试函数内部调用pytest.skip。
https://stackoverflow.com/questions/73810583
复制相似问题