一个愚蠢的python逻辑语法错误

这个事情再次佐证了一个莫名其妙的现象背后必定会有一个愚蠢到无以复加的错误的真理。python

 

写python单元测试的时候发现一个莫名其妙的问题:dom

    def xmlStandander(self,s):
            return xml.dom.minidom.parseString(s).toxml();
            
    def assertEqualXMLStruct(self,get,wanted):
        self.assertEqual(
            self.xmlStandander(get),
            self.xmlStandander(wanted)
        );

 这两个函数是用于测试的辅助函数。函数

测试函数被这样调用:单元测试

    def testNoneExpect(self):
        self.assertEqualXMLStruct
        (
            mapToXmlElement("item", {}), 
            '<item></item>' 
        );

 测试经过。我很无知的认为何问题都没有了。测试

D:\temp\py>xmltest.py
......
----------------------------------------------------------------------
Ran 6 tests in 0.016s

OK

 

直到我很无聊的打算在里头引起一个异常:xml

 

    def assertEqualXMLStruct(self,get,wanted):
        raise ValueError();
        self.assertEqual(
            self.xmlStandander(get),
            self.xmlStandander(wanted)
        );

 运行。。。咦,怎么会依然OK?blog

D:\temp\py>xmltest.py
......
----------------------------------------------------------------------
Ran 6 tests in 0.016s

OK

 

干掉这个ValueError,换个位置。。我在这里引起:get

 

    def testNoneExpect(self):
        raise ValueError();
        self.assertEqualXMLStruct
        (
            mapToXmlElement("item", {}), 
            '<item></item>' 
        );
        

 这回成功的引起了异常。。it

D:\temp\py>xmltest.py
....E.
======================================================================
ERROR: testNoneExpect (__main__.TestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "D:\temp\py\xmltest.py", line 82, in testNoneExpect
    raise ValueError();
ValueError

----------------------------------------------------------------------
Ran 6 tests in 0.000s

FAILED (errors=1)

 

真是个诡异的问题。。。ast

 

而后我很无趣的决定在里头随便乱来一下。。。

    def assertEqualXMLStruct(self,get,wanted):
        asdfasasasdfasgadgfads
        self.assertEqual(
            self.xmlStandander(get),
            self.xmlStandander(wanted)
        );

 结果以下:

D:\temp\py>xmltest.py
......
----------------------------------------------------------------------
Ran 6 tests in 0.000s

OK

这极大的颠覆了个人人生观和世界观。。。而后我试了试这个。。

    def testNoneExpect(self):
        asdfasasasdfasgadgfads
        self.assertEqualXMLStruct
        (
            mapToXmlElement("item", {}), 
            '<item></item>' 
        );

 结果以下:

D:\temp\py>xmltest.py
....E.
======================================================================
ERROR: testNoneExpect (__main__.TestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "D:\temp\py\xmltest.py", line 84, in testNoneExpect
    asdfasasasdfasgadgfads
NameError: global name 'asdfasasasdfasgadgfads' is not defined

----------------------------------------------------------------------
Ran 6 tests in 0.016s

FAILED (errors=1)

 很明显,我敲入的这一堆乱七八糟的东西不是魔力字符,而是那个函数没有运行。

 

那么为何没有运行呢?

 

揭晓正确答案。。。。。。

 

~~~~~~~悲催的分割线~~~~~~~

正确的调用方法以下:

    def testNoneExpect(self):
        self.assertEqualXMLStruct(
            mapToXmlElement("item", {}), 
            '<item></item>' 
        );

 个人世界终于被久违的纠正了:

D:\temp\py>xmltest.py
....E.
======================================================================
ERROR: testNoneExpect (__main__.TestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "D:\temp\py\xmltest.py", line 84, in testNoneExpect
    asdfasasasdfasgadgfads
NameError: global name 'asdfasasasdfasgadgfads' is not defined

----------------------------------------------------------------------
Ran 6 tests in 0.000s

FAILED (errors=1)

 祝福大家。。。。

相关文章
相关标签/搜索