当UnitTest中的错误字符串匹配时发生断言错误?

2024-06-26 02:08:34 发布

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

我创建的一个类接受一个变量来表示三维空间中的一个点,例如point = [x, y, z],我检查该点的长度是否正确,以确保它是三维的,如果不是,则抛出一个错误:

if len(point) != 3:
        raise ValueError(f"Point: {point}, is not 3D.")

我目前正在测试这个类,当我故意传递一个2D点:point = [1, 1]时,我得到一个错误字符串:

"Point: [1, 1], is not 3D."

但当我使用以下方法进行比较时:

self.assertRaisesRegex(
        ValueError, "Point: [1, 1], is not 3D.",
        edits.Cut, 'p', [1, 1], plane=[1, 1, 1])

我得到一个断言错误异常:

AssertionError: "Point: [1, 1], is not 3D." does not match "Point: [1, 1], is not 3D."

这对我来说似乎很奇怪,因为弦是完全一样的。我将f字符串与assertRaiseRegex(...)之外的预期字符串进行了比较,并确认它们是相同的

似乎f字符串与此无关,即使我将错误返回字符串写为:raise ValueError("Point: [1, 1], is not 3D."),仍然会得到相同的错误。这与UnitTest处理字符串中类似列表的格式有关吗


Tags: 方法字符串selflenifis错误not