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