在Twisted中对客户端 - 服务器交互进行单元测试

时间:2012-03-21 05:07:29

标签: python unit-testing twisted

在我最新的Python项目中,利用Twisted,我试图擅长使用unittest模块。在高层次上,我正在构建两个专门用于相互通信的RESTful API。对于大多数请求,我可以使用DummyRequest并根据预期的常量测试渲染值,并且一直工作正常。

但是,我有一些情况,设计需要在一台服务器上请求(除其他外)然后向另一台服务器发送请求,但并不真正关心响应。重要的是请求发生了。

就像我说的那样,我可以测试另一方的功能完全没问题,但是我对如何测试以确保数据被发送感到困惑。到目前为止我的想法是

  • 设置一个虚拟测试服务器,只检查请求是否已经完成并验证输入 - 看起来片状和太多的努力
  • 设置一个装饰器来包装某些测试并修改urllib.urlopen以报告它何时被调用,我们试图检索什么,并允许我简单地在那里返回已知结果。

我倾向于第二种选择,因为它似乎更像pythonic,但也有点hacky。

思想?

2 个答案:

答案 0 :(得分:1)

Twisted带有自己的单元测试框架,名为Trial。正如您可能想象的那样,它非常适合测试您的网络代码。 Here's a tutorial to start you off.

答案 1 :(得分:0)

我不太了解Twisted或您如何设置被测系统,但是您可以在一个线程上启动两个服务器吗?其中一个是你正在测试的那个,另一个只是一个可以接受任何请求的假人。除此之外,虚拟对象将存储它已接收到呼叫的信息。在第一台服务器上启动操作使其调用第二台服务器后,您可以断言第二台服务器已收到请求。