如何基于真值表值创建测试用例?

2024-03-28 11:17:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从spaCy文档中的令牌创建输出。使用真值表,我需要输出所有可能的场景进行测试。输入的数量因输入而异。如果可能的话,我希望它是灵活的,以这种方式做3+输入:((a和b)或c)。你知道吗

每个场景的输入都有一个正(真)或负(假)的方面(即设置输入或未设置输入),因为必须检查所有可能的情况。 对于2输入场景,以下结果是目标:

输入:当“输入1设置”或“输入2不可用”时,则“检测到故障”。你知道吗

输出:

  1. 案例1:

    • 设置输入1
    • 输入2不可用
    • 检测到故障
  2. 案例2:

    • 输入1未设置
    • 输入2不可用
    • 检测到故障
  3. 案例3:

    • 设置输入1
    • 输入2可用
    • 检测到故障
  4. 案例4:

    • 输入1未设置
    • 输入2可用
    • 未检测到故障

对于3个或更多的输入,它将以指数级增加。你知道吗

我可以将数组或列表中的字符串值格式化/提取为输出的正确格式。我的主要问题是通过n个输入和混合类型的逻辑进行迭代。你知道吗

def truth_table(n):
    table = list(itertools.product([False, True], repeat=n))
    print(table)
truth_table(3)

这对我不起作用,因为它只处理输入,而不是结果输出。你知道吗

我考虑过将输入作为元组添加,指定一个值1或0作为其正“版本”或负“版本”的指示符,并将真值表定义为一个2D列表。然后遍历真值表的每个位置,用指定的输入语句替换0和1值,创建一个新的2D数组。你知道吗

or_2 = [[0,0,0],
        [0,1,1],
        [1,0,1],
        [1,1,1]]

and_2 = [[0,0,0],
        [0,1,0],
        [1,0,0],
        [1,1,1]]

Tags: 文档版本目标列表数量spacy方式table
1条回答
网友
1楼 · 发布于 2024-03-28 11:17:08

每个因子的值集(不是“输出”集)是可能值的枚举。在这方面,您的输入似乎非常规范,因为集合包含一个状态词,在它前面加上/不加“not”。因此,你有一套

A     {"not set", "set"}
B     {"not available", "available"}
out   {"not Detected", "Detected"}

你用分隔符“then”来区分进出。您有4个用例,因为AxB有4个元素。你知道吗

如果符合您的用法,您可以将这些集合引用为list或dict。我不知道你所说的“x类型的逻辑”是什么意思;如果你在解析一个逻辑表达式,那么你需要精确地查找该类型的解析器。你知道吗

在给定的情况下,您需要提取每个子句的信息,并将其包含到第三列“out”的正生成中。请注意,我假设您的“then”关键字在逻辑上是“iff”。你知道吗

state_1 = "set"
state_2 = "not available"
op_1 = operator.__or__

table = []
for in1, in2 in itertools.product(A, B):
    val1 = in1 == state_1
    val2 = in2 == state_2
    table.append([val1, val2, op_1(val1, val2)])

输出(表的值):

[[False, True, True],
 [False, False, False],
 [True, True, True],
 [True, False, True]]

有了更多的输入和更多的逻辑操作,您将需要转向解析机制并构建这些二进制操作的树。你知道吗

这能让你动起来吗?你知道吗

相关问题 更多 >