如何根据真值表值创建测试用例?

问题描述 投票:0回答:1

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

每种情况的输入都具有正(True)或负(False)方面(即,当设置了输入或未设置输入时,因为必须检查所有可能的情况。对于2输入方案,以下结果是目标:

输入:当“输入1被设置”或“输入2不可用”时,“检测到故障”。

输出:

  1. 情况1:

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

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

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

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

对于3个或更多输入,它将成倍增加。

对于“设置输入1”,我保存了一个名为inputset_pos的参数,用于设置它:

inputset_pos = 'Input 1 is set'

并且当未设置参数时,我保存了一个名为inputset_neg的参数:

inputset_neg = 'Input 1 is not set'

我在将数组或列表中的字符串值格式化/提取为我的输出的正确格式时没有问题。我的主要问题是通过n个输入和x个逻辑类型进行迭代。

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

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

我已经考虑过将输入作为元组添加,将值1或0分配为指示其正或负“版本”的指标,并将真值表定义为2D列表。然后遍历真值表的每个位置,并使用指定的Input语句替换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]]
python io logic itertools spacy
1个回答
0
投票

您为每个因素设置的值(而不是“输出”设置)是可能值的枚举。在这方面,您的输入似乎非常规范,因为该集合由一个状态字组成,该状态字前面带有/没有单词“ not”。因此,您有套

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

您用分隔符“ then”来区分。您有4个用例,因为AxB有4个元素。

如果适合您,可以将这些集合引用为列表或字典。我不确定“ x逻辑类型”是什么意思;如果您要解析逻辑表达式,则需要准确查找该类型的解析器。

在给定的情况下,您需要提取每个子句的信息,并将其体现为第三列“ out”的正数。请注意,在下面,我假设您的“ then”关键字在逻辑上是“ iff”。

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

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

有了更多的输入和更多的逻辑运算,您将需要转向解析机制,并为这些二进制运算构建一棵树。

这能让你动起来吗?

© www.soinside.com 2019 - 2024. All rights reserved.