Select 所有可能组合的测试用例子集

Select subset of test cases from all possible combinations

假设我正在编写一个接受约 40 个输入的寿命预测计算器:

sex = ['Male', 'Female']
smoking_status = [True, False]
...

最终,将有数万亿个可能的测试用例可以使用 itertools 公开,但这些是通过从左到右逐渐调整每个字段来计算的:

for test_case in itertools.product(sex, smoking_status):
    assert(myfunc(test_case) = trueval(test_case)

输出(随机化):

['Male', True]
['Male', False]
['Female', True]
['Female', False]

如何从所有可能的组合中随机 select N=1000 个测试用例?

编辑: 约束 #1:由于我担心我的笔记本电脑的健康和福祉,我添加了一个约束,我无法生成包含数百万亿个元素的列表,然后随机 select 它的一个子集 :)

我的解决方案最终是将所有变量存储在字典中,其中键是变量名称,值是所有可能值的列表

然后我遍历每个项目,(Pseudo-code:) [k:v[randint(0, len(v))] for k, v in mydict.items()] 并使用随机整数函数随机选择一个索引

注意:这不考虑重叠;可以生成 2 个相同的测试用例,但对我来说这是可以接受的,因为有数万亿个可能的测试用例