如何在我的代码中以编程方式结合假设,而不是作为测试?(使用假设来区分自动机和Python函数)

2024-09-27 07:24:41 发布

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

我有一个Python函数,它描述了语言L,它获取一个单词,如果单词在语言中,则返回True,否则返回False。 另外,我有一个确定性有限自动机(DFA),它描述了另一种语言L2,我想检查L2是否=L。 我想也许我可以使用假设库来获得反例并区分函数和DFA,但我不知道如何以编程方式在代码中组合假设,而不是作为测试。 谢谢


Tags: 函数代码语言falsetrue自动机编程方式
1条回答
网友
1楼 · 发布于 2024-09-27 07:24:41

看起来你是在假设问题追踪器上问这个问题的-谢谢你建议把它移到这里:-)把我的答案也传给后代:

这里的关键洞察是,您可以像调用任何其他函数一样调用假设包装函数,并让内部函数保存其输入。例如:

counterexample = None

@given(x=st.integers())
def check(f, g, x):
    if f(x) != g(x):
        global counterexample
        counterexample = x
        raise AssertionError

with contextlib.suppress(AssertionError):
    check(f=math.sin, g=math.cos)

assert counterexample is not None

相关问题 更多 >

    热门问题