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

3
在我的最新Python项目中,利用Twisted,我尝试着善于使用unittest模块。总体来说,我正在构建两个专门设计用于相互通信的RESTful API。对于大多数请求,我可以简单地使用DummyRequest并将渲染后的值与预期常量进行比较,这一直运作得很好。
然而,我有一些情况需要在一个服务器上发出请求(除其他事项外),然后发送请求到另一个服务器,但并不真正关心响应。重要的是请求已经发生了。
像我所说的,我可以很好地测试另一端的功能,但我却被如何测试以确保数据已发送而困扰。到目前为止,我的想法是:
- 设置一个虚拟测试服务器,只需检查请求是否已发送并验证输入即可 - 看起来不太可靠且需要花费太多精力。 - 设置一个装饰器来包装某些测试,并修改urllib.urlopen以报告何时调用它,我们尝试检索什么,以及允许我在那里返回已知结果。
我倾向于第二个选项,因为它似乎更符合Python风格,但也有点hacky。
您有什么想法?

3
您的问题对我来说有些模糊,您已经有一个一般性答案。然而,urllib.urlopen 引起了我的注意。这是您发出请求的方式吗?如果是,您应该更改代码中的那部分。urllib.urlopen 是一个阻塞调用。请改用 twisted.web.client - Jean-Paul Calderone
2个回答

1

我知道 Trial,但它似乎没有立即提供任何出站连接检查功能。我想我可以再看看。谢谢! - Michael Pratt

0

我对Twisted或者你如何设置测试系统并不是很了解,但是你能否在单个线程上启动两个服务器呢?其中一个是你正在测试的服务器,另一个只是一个可以接受任何请求的虚拟服务器。除此之外,这个虚拟服务器还会存储它所接收到的信息。在第一个服务器发起操作并调用第二个服务器后,你可以断言第二个服务器已经收到了请求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接