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

写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. #Leetcode# 692. Top K Frequent Words

    https://leetcode.com/problems/top-k-frequent-words/ Given a non-empty list of words, return the k mo ...

  2. 初期测评 A 排序

    https://vjudge.net/contest/240302#problem/A 输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0 ...

  3. 【问底】徐汉彬:PHP7和HHVM的性能之争 (真是学到了很多)

    来源:http://www.csdn.net/article/2014-12-25/2823234 作者:徐汉彬 摘要:近日,PHP7和HHVM的性能之争成为了一个讨论热点,但毫无疑问,它们都在提升P ...

  4. NodeJs 遍历文件夹内容 上传到服务器.并输出上传记录文件

    var path = require('path'); var glob = require('glob') var fs = require('fs'); var Promise = require ...

  5. .NET Socket 简单入门

    说到Socket,想必大家都或多或少有所涉及,从最初的计算机网络课程,讲述了tcp协议,而Socket就是对协议的进一步封装,使我们开发人员能够更加容易轻松的进行软件之间的通信. 这个星期刚好接受一个 ...

  6. 用友时空B/S表单外挂(接口)程序操作说明文档

    用友时空B/S表单外挂(接口)程序 一.B/S表单接口需求 众所周知,用友时空KSOA支持B/S架构.且移动商务.在线门店,都是完全基于B/S架构的. B/S架构的优越性在于没有本地客户端和本地数据, ...

  7. Lottie开源库实现Android动画效果

    Lottie简介 Lottie是一个支持Android.iOS.React Native,并由Adobe After Effects制作aep格式的动画,然后经由bodymovin插件转化渲染为jso ...

  8. service依赖dao的接口进行数据传输

    service依赖dao的接口进行数据传输

  9. SSL身份认证原理 - 目标: 搞清楚数字证书和数字签名的关系

    1  概述 1.1  产生背景 基于万维网的电子商务和网上银行等新兴应用,极大地方便了人们的日常生活,受到人们的青睐.由于这些应用都需要在网络上进行在线交易,它们对网络通信的安全性提出了更高的要求.传 ...

  10. 关于UIInterfaceOrientation的一个bug

    在ios中获取设备当前方向的枚举有UIInterfaceOrientation和UIDeviceOrientation ,前者包含枚举 Unknown//未知 Portrait//屏幕竖直,home键 ...