使用nose做测试

不做单元测试的程序员不是好程序员。最近我在Pylons下面做开发, 使用 nose 做单元测试,颇有心得, 在这里分享一下。 1. Pylons中依赖包 先简单介绍一下Pylons, Pylons与其说是一个框架,不如说是一堆框架的组合, Pylons在其中做到一个胶水的作用。Pylons依赖的包如下。 breaker,缓存和Session FormEncode,用户输入检查 Mako,模板渲染 nose,自动化测试 Paste,服务器 Routes, 路由 Tempita,Paste的模板 Weberror WebOb,提供WSGI请求响应等对象 WebTest,Paste自带的测试小框架, 提供TestResponse和TestRequest两个有用的小东西 Pylons的测试主要使用的其中的 Paste / nose / WebOb / WebTest。 遇到问题的时候,可以去翻一翻上面的文档。 ...

2011-09-22 · alswl

倾诉

Thumbnail

很少转载别人的文字,这篇是老同学的一篇博文,很美的文字。 原文地址http://blog.sina.com.cn/s/blog_49c54b980100vmq7.html 我想。 每个人都有这样一个成长的过程。我现在看别人经历的十七八岁,写的文字,想表达的内容,仿佛就是在回望几年前的自己。尽管经历不同,却几乎写着同样的文字,表达着几乎 同样的情感。这是一种很奇妙的,感同身受的感觉。 现在当我静下来,真正可以回望过往,看到自己曾经的确年少轻狂,为赋新词强说愁。不管是对待生活对待人生或者是对待感情的态度,或许都要经历那样一个过往,才能变得更 加成熟。先贤有说人生的3重境界,看山是山看水是水,到看山不是山看山不是水,最后又回归于看山是山看水是水。现在想来,这的确是对于人生一个最精妙的表达也是概括。 尽管在不同的时期我们对于山水的理解各有不同。 ...

2011-09-14 · alswl

使用pptpclient连接vpn网络[译文]

最近在ddwrt配置vpn,参考了arch的pptpclient配置文档[Microsoft VPN client setup with pptpclien t](https://wiki.archlinux.org/index.php/Microsoft_VPN_client_setup_with_pptpcl ient),同时顺便花了一点时间翻译成中文,正文如下(使用wiky.js转换pe diawiki到html,原文会有更多的wiki模板样式便于查看,有问题请参照原文)。 pptpclient是一个实现Microsoft PPTP协议的程序。因此它能够被用来接入另一个Microsoft VPN网络,比如学校和单位。 安装PPTPClient pptpclient由安装包pptpclient提供,运行下列命令可以安装: ...

2011-09-04 · alswl

使用NX替代VNC

Thumbnail

NX 是 NoMachine 公司推出的下一代远程桌面技术,可以说是用来替换 VNC 的一个较好方案。 VNC is remote control software which allows you to view and fully interact with one computer desktop (the “VNC server”) using a simple program (the “VNC viewer”) on another computer desktop anywhere on the Internet. VNC 是一个允许你从一台电脑(VNC 查看器)查看并且操作另外一台电脑(VNC 服务器)小程序。 我在 ArchLinux 上同时也使用 VNC 服务,我推荐使用 TightVNC。 NX优势 VNC 的缺点在于实时传输屏幕,图片的数据量比较大,所以会比较慢,并且有一条一条刷新的情况出现。 而 NX 则在客户端创建 Xorg 服务器,在网络层只传输 XWindows 信号,这样就比直接传输数据提供更好的速度和实时响应效果。 ...

2011-08-28 · alswl

TypeError: sequence item 22: expected string or Unicode, long found

Mako 下面开发时候,遇到这个问题 TypeError: sequence item : expected string or Unicode, long found Trace 的情况大概这样(我的错误信息无法再现,这是某位外国友人的错误信息) File ‘/Users/amaslov/Projects/dou-pylons/doupy/doupy/controllers/ root.py’, line 239 in staticpage return render(’/pages/%s.html’ % name) File ‘/Users/amaslov/Projects/dou-pylons/py/lib/python2.5/site- packages/Pylons-0.9.7-py2.5.egg/pylons/templating.py’, line 274 in render_mako cache_type=cache_type, cache_expire=cache_expire) File ‘/Users/amaslov/Projects/dou-pylons/py/lib/python2.5/site- packages/Pylons-0.9.7-py2.5.egg/pylons/templating.py’, line 249 in cached_template return render_func() File ‘/Users/amaslov/Projects/dou-pylons/py/lib/python2.5/site- packages/Pylons-0.9.7-py2.5.egg/pylons/templating.py’, line 271 in render_template return literal(template.render_unicode(**globs)) File ‘/Users/amaslov/Projects/dou-pylons/py/lib/python2.5/site- packages/Mako-0.2.4-py2.5.egg/mako/template.py’, line 138 in render_unicode return runtime.render(self, self.callable, args, data, as_unicode=True) File ‘/Users/amaslov/Projects/dou-pylons/py/lib/python2.5/site- packages/Mako-0.2.4-py2.5.egg/mako/runtime.py’, line 348 in _render return context._pop_buffer().getvalue() File ‘/Users/amaslov/Projects/dou-pylons/py/lib/python2.5/site- packages/Mako-0.2.4-py2.5.egg/mako/util.py’, line 74 in getvalue return self.delim.join(self.data) TypeError: sequence item 68: expected string or Unicode, NoneType found Mako 的邮件列表曾在2009年遇到这个错误,讨论信息在[这里](http://www.mail-archive.com/pylons- discuss@googlegroups.com/msg11021.html)(需翻墙) 讨论了半天也没什么结果,一直围绕在 default_filter 上面,我改了半天,也没效果。 ...

2011-08-25 · alswl

简单输入提示框实现

Thumbnail

早期的输入框提示是这样的(via baidu) 左边一个 label ,右边一个输入框。 比较现代的方式是(via Discuz!) 更漂亮的方式是(via 点点) 登录提示信息是放在输入框里面,可以减少文字干扰,我也想在自己手头的小项目中实现这种效果。 我需要达到几个要求: 提示信息是可以暂存的,即用户的输入在清空之后,还能够显示原来的提示信息 只需为 text / textarea 添加一个 class 即可实现效果 不修改 DOM 节点,避免影响上下文选择器 为了实现效果,我需要将提示信息暂存到某个地方。有3个地方可供选择: js 全局变量、输入框自定义属性、上下文 DOM 节点。 ...

2011-08-18 · alswl

get json failed in IE

半夜在开工打补丁,某个 bug 是 Firefox 下面能接受到 Ajax 回调请求,而 IE 不行。 解决方案在[http://stackoverflow.com/questions/425854/jquery-ajax-request-failing- in-ie](http://stackoverflow.com/questions/425854/jquery-ajax-request-failing- in-ie) 缘由是由于 IE 不能正常识别application/json; charset=utf8 于是修改为response.headers['Content-Type'] = 'application/json' 狗日的 IE!

2011-08-14 · alswl

go-pylons.py在Python2.7下错误解决

当使用 Python2.7 + go-pylons.py 创建 Pylons 运行环境的话,会报一下错误。 [alswl@arch-vm xingtong]$ python go-pylons.py myb_env New python executable in myb_env/bin/python Traceback (most recent call last): File "/home/alswl/work/xingtong/myb_env/lib/python2.7/site.py", line 67, in <module> import os File "/home/alswl/work/xingtong/myb_env/lib/python2.7/os.py", line 398, in <module> import UserDict File "/home/alswl/work/xingtong/myb_env/lib/python2.7/UserDict.py", line 83, in <module> import _abcoll File "/home/alswl/work/xingtong/myb_env/lib/python2.7/_abcoll.py", line 11, in <module> from abc import ABCMeta, abstractmethod File "/home/alswl/work/xingtong/myb_env/lib/python2.7/abc.py", line 8, in <module> from _weakrefset import WeakSet ImportError: No module named _weakrefset ERROR: The executable myb_env/bin/python is not functioning ERROR: It thinks sys.prefix is '/home/alswl/work/xingtong' (should be '/home/alswl/work/xingtong/myb_env') ERROR: virtualenv is not compatible with this system or executable STFW 之后,找到了引发错误的根源virtualenv,这个 bug 在这里已经修复了。 #!diff --- a/virtualenv.py 2010-09-14 21:48:58.078562930 +0200 +++ b/virtualenv.py 2010-09-14 21:46:20.650769346 +0200 @@ -51,6 +51,8 @@ REQUIRED_FILES = ['lib-dynload', 'config if sys.version_info[:2] >= (2, 6): REQUIRED_MODULES.extend([‘warnings’, ’linecache’, ‘_abcoll’, ‘abc’]) if sys.version_info[:2] >= (2, 7): REQUIRED_MODULES.extend([’_weakrefset’]) if sys.version_info[:2] <= (2, 3): REQUIRED_MODULES.extend([‘sets’, ‘future’]) if is_pypy: 懒人可以点击go-pylons.py下载。

2011-08-02 · alswl

新浪微博应用Key

前两天 [FaWave](https://chrome.google.com/webstore/detail/aicelmgbddfgmpieedjiggi fabdpcnln) 的新浪微博接口出现了问题, 一直无法发送和接受信息,今天查看了一下设定里面的信息,官方给出这样的解释: 我们曾经很傻很天真地以为新浪微博开放平台是真的开放的。由于新浪将FaWave的应用Key屏蔽了,目前只能无奈地让用户选择使用其他应用的Key来继续让Fa Wave兼容新浪微博。望谅解。 看样子又需要自己申请一个新浪微博的App了,我去 新浪微博开放平台 注册了一个APP,叫做 滴滴滴的小喇叭 。 App Key:1991355110 App Secret:de253ff255f1190c8fd61977f5e5781b 需要的同学可以自取。 ...

2011-07-28 · alswl

Vimperator的Pass through

作为 vim 的拥护者,我同时也喜欢使用 Vimperator 这款 Firefox 下面的插件,这款插件可以帮助实现 Firefox 的纯键盘操作。 我同时也是 GMail / Google Reader 的深度用户,他们在网页端也支持纯键盘操作,这样就和 Vimperator 产生了冲突。键盘按键事件被 Vimperator 拦截了,导致键盘操作在这些应用上面不起作用。 还好,Vimperator 提供了一种名为 Pass through 的模式,按 CTRL+Z 进入这种模式,在这种模式下面,Vimperator 将不响应键盘操作,全部放行到 Web 页面。 在某一次版本更新之后, Pass through 的快捷键 CTRL+Z 似乎不起作用了,我翻遍了用户手册也没有找到解决办法。 ...

2011-07-19 · alswl