Python Twisted中的客户机-服务器交互单元测试

Python Twisted中的客户机-服务器交互单元测试,python,unit-testing,twisted,Python,Unit Testing,Twisted,在我最新的Python项目中,利用Twisted,我试图擅长使用unittest模块。在较高的层次上,我正在构建两个专门为相互通信而设计的RESTful API。对于大多数请求,我可以使用DummyRequest并根据预期的常量测试呈现的值,这很好 但是,我遇到过一些情况,设计需要在一台服务器上发出请求,然后(除其他外)向另一台服务器发送请求,但实际上并不关心响应。重要的是请求发生了 正如我所说的,我可以在另一端测试该功能,但我在如何测试以确保数据被发送方面遇到了难题。到目前为止,我的想法是

在我最新的Python项目中,利用Twisted,我试图擅长使用unittest模块。在较高的层次上,我正在构建两个专门为相互通信而设计的RESTful API。对于大多数请求,我可以使用DummyRequest并根据预期的常量测试呈现的值,这很好

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

正如我所说的,我可以在另一端测试该功能,但我在如何测试以确保数据被发送方面遇到了难题。到目前为止,我的想法是

  • 设置一个虚拟测试服务器,只检查是否发出了请求,并验证输入-看起来不可靠,而且工作量太大
  • 设置一个decorator来包装某些测试,并修改urllib.urlopen,以便在调用它时报告我们试图检索的内容,并允许我在那里简单地返回一个已知结果
我倾向于第二种选择,因为它看起来更像蟒蛇,但也有点黑客


想法?

我不太了解Twisted,也不知道如何设置测试中的系统,但能否在一个线程上启动两台服务器?其中一个是您正在测试的,另一个只是可以接受任何请求的虚拟机。除此之外,虚拟机还将存储它已收到呼叫的信息。在第一台服务器上启动导致其调用第二台服务器的操作后,您可以断言第二台服务器已收到请求。

Twisted附带了自己的单元测试框架,称为试用。正如您所想象的,它非常适合测试您的网络代码

你的问题对我来说有点模糊,你已经有了一个大致的答案。然而,
urllib.urlopen
突然向我扑来。这就是你提出要求的方式吗?如果是这样,您可能应该更改代码的这一部分
urllib.urlopen
是一个阻塞调用。改用
twisted.web.client
。我知道试用版,但它似乎没有立即提供任何类型的出站连接检查功能。我想我可以再看看。谢谢