我读过关于测试驱动开发的official tutorial,但它对我的案例没有太大帮助。我编写了一个小库,它广泛地使用了twisted.web.client.Agent
及其子类(例如BrowserLikeRedirectAgent
),但我一直在努力使教程的代码适应我自己的测试用例。在
我看了一下twisted.web.test.test_web
,但我不明白如何将所有的部分组合在一起。例如,根据官方教程,我仍然不知道如何从Agent
获取Protocol
对象
有谁能告诉我如何为一些依赖于GET
和POST
数据的代码编写一个简单的测试?任何额外的细节或建议是非常欢迎的。。。在
非常感谢!在
不如用
@inlineCallbacks
让生活更简单(即代码更可读)。在事实上,我甚至建议不要直接使用
Deferred
s,除非对于性能或在特定的用例中是绝对必要的,而是始终坚持使用@inlineCallbacks
-这样可以使代码看起来像普通代码,同时从非阻塞行为中获益:试用应该负责剩下的工作(即等待从测试函数返回的
Deferred
s(@inlineCallbacks
-包装的可调用文件也“神奇地”返回Deferred
-如果您还不熟悉@inlineCallbacks
,我强烈建议您阅读更多关于@inlineCallbacks
的内容)。在另外,还有一个用于nosetests的扭曲的“插件”,它允许您从测试函数返回
Deferred
S,并让nose等待它们被激发后再退出:http://nose.readthedocs.org/en/latest/api/twistedtools.html这与mike所说的类似,但尝试测试响应处理。还有其他的方法,但我喜欢这样。我也同意,测试wrap代理的东西并没有太大帮助,测试协议/在协议中保持逻辑可能更好,但有时您只想添加一些绿色标记。在
这个怎么样?试运行以下项目。基本上,您只是嘲笑代理,假装它像广告中说的那样,并使用FakeAgent(在本例中)使所有请求失败。如果你真的想把数据注入到传输中,我想那需要“更多的工作”。但是你真的在测试你的代码吗?还是探员的?在
相关问题 更多 >
编程相关推荐