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

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

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

    def testNoneExpect(self):
raise ValueError();
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 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:\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)

祝福你们。。。。

一个愚蠢的python逻辑语法错误的更多相关文章

  1. 又是一个愚蠢的错误,皆因.xml而起

       论java中的.xml到底有多坑?! 感觉自己都快哭了,再一次被.xml给坑了一下,这次坑的太狠了,一下子导致自己浪费了昨天一下午,一晚上,今天一上午和半个下午呀,中间的过程真的是乏善可陈呀,各 ...

  2. python的错误和异常

    python错误和异常 错误 错误分为语法错误和逻辑错误 语法错误 >>> if File "<stdin>", line 1 if ^ Syntax ...

  3. python基础——错误处理

    python基础——错误处理 在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原因.在操作系统提供的调用中,返回错误码非常常见.比如打开文件的函数 ...

  4. python的错误处理

    一.python的错误处理 在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错以及出错的原因. 在操作系统提供的调用中,返回错误码非常常见.比如打开文件的函数o ...

  5. 作业1开发一个简单的python计算器

    开发一个简单的python计算器 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568 ...

  6. #华为云·寻找黑马程序员# 如何实现一个优雅的Python的Json序列化库

    在Python的世界里,将一个对象以json格式进行序列化或反序列化一直是一个问题.Python标准库里面提供了json序列化的工具,我们可以简单的用json.dumps来将一个对象序列化.但是这种序 ...

  7. python中错误、调试、单元测试、文档测试

    错误分为程序的错误和由用户错误的输入引起的错误,此外还有因为各种各样意外的情况导致的错误,比如在磁盘满的时候写入.从网络爬取东西的时候,网络断了.这类错误称为异常 错误处理 普通的错误处理机制就是在出 ...

  8. Python 编码错误解决方案

    Python 编码错误解决方案 Python UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 7: ordin ...

  9. 10个最容易犯的Python开发错误

    10个最容易犯的Python开发错误 转载 2017年09月25日 16:54:36 标签: python / 大数据 / 大讲台   Python是一门简单易学的编程语言,语法简洁而清晰,并且拥有丰 ...

随机推荐

  1. Python入门:数据结构的3个小技巧

    这是关于Python的第11篇文章,主要介绍下数据结构的3个小技巧. 排序: 使用sorted函数实现排序. sorted函数按照长短.大小.英文字母的顺序给每个列表的元素进行排序.这个函数经常在数据 ...

  2. lr关联-保存数组并调用(转)

    LOADRUNNER中的一个关联技巧     众所周知,在LoadRunner中,关联是一个很重要的动作,大多数的脚本在录制完成后并不能直接回放,需要通过一定的关联才能成功回放.关联的技巧有很多,这里 ...

  3. Thread的start和run的区别

    最近看到一个题目,代码如下: public static void main(String args[]) { Thread t = new Thread() { public void run() ...

  4. File FileStream StreamReader StreamWriter C#

    存在各种各样的IO设备,比如说文件File类(字符串文件和二进制文件),可以直接使用File类对文件进行读写操作. 这些各种IO的读取和写入是通过流的形式实现的,基类为Stream,针对各种不同的IO ...

  5. 栈java实现

    这几天,过得挺充实的,每天都在不停的上课,早上很早就起来去跑步,晚上到图书馆看书.一边紧张的学习,一边在默默的备战软考.最近还接手了一个公司官网的建设.这是我在川信最后的一个完整学期了,每件事我都要认 ...

  6. BZOJ3462 DZY Loves Math II(动态规划+组合数学)

    容易发现这是一个有各种玄妙性质的完全背包计数. 对于每个质数,将其选取个数写成ax+b的形式,其中x=S/pi,0<b<x.那么可以枚举b的部分提供了多少贡献,多重背包计算,a的部分直接组 ...

  7. EF 使用 oracle

    EF 使用 oracle https://www.oracle.com/technetwork/topics/dotnet/downloads/index.html C:\Program Files ...

  8. JVM中各种变量保存位置

    Java中变量分为静态变量,实例变量,临时变量.那么各种变量具体保存在JVM中的何处呢? 1 静态变量:位于方法区. 2 实例变量:作为对象的一部分,保存在堆中. 3 临时变量:保存于栈中,栈随线程的 ...

  9. Metasploit+python生成免杀exe过360杀毒

    Metasploit+python生成免杀exe过360杀毒 1在kali下生成一个反弹的msf的python脚本,命令如下: msfvenom -p windows/meterpreter/reve ...

  10. Mac上安装mariadb

    1.查看mariadb包信息 # brew info mariadb mariadb: stable 10.2.6 (bottled) Drop-in replacement for MySQL ht ...