摘要:作为程序员,懂得测试,这是必须的职业技能。很遗憾,我以前从未意识到这点,因此经历了很多叫苦不迭的开发生涯。当然了,期望每个人都成为测试高手也是不可能的,但是最基本的单元测试啥的是不惜的,尤其是现在中小公司测试开发不分家的情况下,懂得测试简直是优秀程序员的标志啊。这篇博客就介绍一下Python的测试方法,主要是单元测试。mock在介绍具体的测试方法之前,先介绍一下mock,简单来说,mock的作用就是要达到一种挂羊头卖狗肉的效果。例如,你想测试一个web客户端,如果为了测试去搭建一个真实的web服务器,这个代价就太大了。这时候,我们就可以创建一个mock对象,通过一些接口模拟一个web服务器,从
阅读全文
摘要:Twisted是用Python实现的基于事件驱动的网络引擎框架,功能非常丰富,基本包括了常用的网络组件。所谓事件驱动,就是说程序就像是一个报警器(reactor),时刻等待着外部事件(event),诸如有人入侵等,一旦有事件发生,程序就会触发一些特定的操作(callback),注入拨打报警电话等。Reactorreactor是twisted框架中的核心,负责管理各种回调函数,接收各种系统事件,并根据规则对事件和回调函数进行匹配、派发处理。在Linux系统中,由于秉承“一切皆文件”的理念,系统中的事件主要就是文件事件以及定时事件。其实大多使用了不同系统中特定的API,具体来说,Linux上默认是
阅读全文
摘要:从这篇博文开始,将讲述建立一个站点的全过程。一方面自己从未做过这类事情,算是对自己的一个挑战,另一方面也给想要学这个的同胞留点参考,特别是*需要课程设计作业和毕业设计的同志们*。首先介绍一下网站功能。这次要建立的一个网站类似于一个在线的辩论场,用户可以发起辩论,自由选择题目,邀请其他用户参加。参加辩论的用户可以自由选择自己论点,分正反双方辩论,当然也可以选择中立进行搅浑水。关于要用到的技术。后端采用Python开发,框架选用Tornado,前端使用AngularJS配合jQuery,数据库选择PostgreSQL,操作系统当然要用Ubuntu了。这里选择的技术完全是因为个人喜好,绝不是因为和其
阅读全文
摘要:写过多线程程序的人肯定对各种锁很熟悉,尤其是下面这种代码def lock_usage: lock.Lock() if(...) : lock.Unlock() return lock.Unlock() return为了避免造成死锁,需要在每个return语句之前都释放锁。像上面的代码中,如果代码的执行路径很多,代码中就会包含大量的unlock语句,代码混乱还是小事儿,如果万一忘掉了unlock,就是个潜在的危险。除了锁之外,包括文件描述符的关闭等涉及到资源释放的操作都会有这种问题。为了解决内存泄漏的内存问题,现代的编程语言提供了垃圾回收机制。同样为了...
阅读全文