在 Mac OS X 的终端上。
assertEqual 的输出是
File "tests/test_conditions.py", line 27, in test_if_condition
self.assertEqual(result, expected)
AssertionError: ' if (self) {\n self.addMainLabel\n self.addSubLabel\n self.setupBackground\n }\n' != ' if self\n self.addMainLabel\n self.addSubLabel\n self.setupBackground\n end\n'
Run Code Online (Sandbox Code Playgroud)
但我想通过评估换行符 '\n' 并在 'AssertionError:' 之后添加换行符来获得以下输出。
File "tests/test_conditions.py", line 27, in test_if_condition
self.assertEqual(result, expected)
AssertionError:
' if (self) {
self.addMainLabel
self.addSubLabel
self.setupBackground
}
' !=
' if self
self.addMainLabel
self.addSubLabel
self.setupBackground
end
'
Run Code Online (Sandbox Code Playgroud)
我认为你不能,至少,不容易。
转义换行符来自对两个字符串的assertEqual调用。repr如果没有它,你也不会得到引号。如果你的任何一个字符串包含!=,它会变得非常混乱。
如果您确实想伪造断言的文本,您可以捕获它,操纵它的属性,然后重新引发它。我不推荐这样做,但这是可能的:
try:
self.assertEquals(result, expected)
except AssertionError as e:
e.args = (e.args[0].replace("\\n", "\n"),) # edit the exception's message
raise
Run Code Online (Sandbox Code Playgroud)
这并没有给出您想要的确切输出(在字符串开头没有添加额外的换行符),但它非常接近。