理解Python中的断言错误消息

时间:2017-08-08 01:15:00

标签: python python-3.x python-unittest

我在Python中使用unittest进行一些测试。我有一个简单的测试:

self.assertEqual(stdout, expected_stdout)

实际上只检查两个字符串的相等性。 当我运行它时,我得到AssertionError,这很好,但我不确定它下面的+/-是什么意思。示例:

FAIL: unittest.case.FunctionTestCase (basic_test4)
actually pretty irrelevant
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/h/u16/c4/00/chenjoh6/csc209_advance_prep_ta/209-materials/assignments/a2/file-archive/20179/testing/a2_fs.py", line 33, in inner_meth_
    simple_test(["asd"], tc.dict_of_tests[name][1], tc.dict_of_tests[name][2] ,tc.dict_of_tests[name][0])(tfs)
  File "/h/u16/c4/00/chenjoh6/csc209_advance_prep_ta/209-materials/autotesting/20179/test_helpers.py", line 111, in _t
    self.assertEqual(stderr, expected_stderr)
AssertionError: 'or is it here(null)This is problemjohn\njohn: Success\n' != 'or is it here(null)john: Success\n'
+ or is it here(null)john: Success
- or is it here(null)This is problemjohn
- john: Success

(!=左边的第一部分是实际输出,!=右边的第二部分是预期的)。

任何人都可以帮我理解如何阅读+/-?感谢

1 个答案:

答案 0 :(得分:1)

这是两个字符串的线差比较,用于将左手侧改为右手侧。 +表示您必须添加第or is it here(null)john: Success行,-表示删除第or is it here(null) this is problemjohn行和john: Success行。

由于左侧仅包含两条线被移除,而右侧仅包含添加的一条线,因此这应该是有意义的。在这种情况下,差异并不是非常有用,但如果线条有更多共同点,那么差异将有助于缩小失败的原因。