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


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

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

        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:	emppy>xmltest.py
    ......
    ----------------------------------------------------------------------
    Ran 6 tests in 0.016s
    
    OK
    

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

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

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

    D:	emppy>xmltest.py
    ......
    ----------------------------------------------------------------------
    Ran 6 tests in 0.016s
    
    OK
    

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

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

     这回成功的引发了异常。。

    D:	emppy>xmltest.py
    ....E.
    ======================================================================
    ERROR: testNoneExpect (__main__.TestCase)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "D:	emppyxmltest.py", line 82, in testNoneExpect
        raise ValueError();
    ValueError
    
    ----------------------------------------------------------------------
    Ran 6 tests in 0.000s
    
    FAILED (errors=1)
    

    真是个诡异的问题。。。

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

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

     结果如下:

    D:	emppy>xmltest.py
    ......
    ----------------------------------------------------------------------
    Ran 6 tests in 0.000s
    
    OK
    

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

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

     结果如下:

    D:	emppy>xmltest.py
    ....E.
    ======================================================================
    ERROR: testNoneExpect (__main__.TestCase)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "D:	emppyxmltest.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:	emppy>xmltest.py
    ....E.
    ======================================================================
    ERROR: testNoneExpect (__main__.TestCase)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "D:	emppyxmltest.py", line 84, in testNoneExpect
        asdfasasasdfasgadgfads
    NameError: global name 'asdfasasasdfasgadgfads' is not defined
    
    ----------------------------------------------------------------------
    Ran 6 tests in 0.000s
    
    FAILED (errors=1)
    

     祝福你们。。。。

  • 相关阅读:
    弹出新窗口
    网页布局之二 二列和三列
    JavaScript prototype
    window和linux开启动顺序
    ASP.net和javascript结合产生乱码的问题
    网页布局之一:XHTML CSS基础知识
    Study Android Chapter 1 Reading
    C++文件的读取
    心智模式
    各种排序算法的稳定性和时间复杂度小结
  • 原文地址:https://www.cnblogs.com/slayercat/p/3330113.html
Copyright © 2020-2023  润新知