如何测试包装外部REST服务的python库(无需点击服务)

时间:2011-10-31 15:18:18

标签: python unit-testing mocking

我正在编写一个Python库来访问Ubuntu One的REST API。 (是的,我知道一个已经存在;这是一个划伤我的痒和学习的项目。)

该库将是围绕REST调用的相对较薄的包装器。我希望能够对我的库进行单元测试,而根本不打U1。实现这一目标的最佳实践标准是什么?

目前,每个REST调用都是一个显式的http请求。我无法看到如何模拟出来,但是如果我创建一个(可模拟的)UbuntuOneRESTAPI类隐藏那些http调用,我怀疑它最终会包含包装器库的大多数功能,这会破坏目的。

1 个答案:

答案 0 :(得分:1)

您的切入点是HTTP请求。

编写一个模拟库,拦截HTTP请求的发送。而不是发送它们,将它们转换为String并分析它们以测试发送代码。

要接收代码,请模拟响应处理程序。在String中保存REST服务器的良好响应,并从中创建HTTP响应对象以测试接收器。

编写一些针对真实事件创建这些请求的测试用例,以便您可以快速验证请求/响应是否正常。