2014-11-07 42 views
1

我正在为仍在开发中的第三方服务制作一个基于Python的REST客户端。问题是要测试/验证客户端能够在各种情况下工作。包括不正确的回应如何为不可靠的服务器单元测试REST客户端?

客户端使用Requests library进行远程REST调用(主要是GET和POST)。而对于单元测试,我正在考虑使用HTTPretty模块来模拟/模拟服务器响应。

问题是如何处理可能的测试用例的数量。考虑以下组成的API;

REQUEST(GET)= http://example.com/new_api?param1=34&param2=hello

RESPONSE = {"value1":34,"value2":"a string"}

我发现自己需要编写单元测试用例下列方案 -

  • 客户端发送的参数正确数目
  • 客户端发送错误的参数值
  • 客户端缺少参数
  • 服务器对上述情况的正确反应
  • 服务器不发送回所有所需的值
  • 服务器混淆值参数(返回一个字符串,而不是一些)
  • 服务器发送的,而不是JSON
  • 回HTML ...等

所有这些广泛的测试背后的意图是帮助确定错误可能源于哪里。即它是我的客户有问题还是第三方服务器?

有谁知道组织Python测试套件以适应这些情况的好方法吗?编写单元测试函数感觉就像它将成为一个永无止境的任务...... :(

回答

0

单元测试的目标是测试你认为的所有情况,你可能必须处理错误。另一方面你不需要测试系统已经自然处理的东西

请注意,HTTP是一种应用程序级别的协议,客户端总是发起请求,服务器只是响应,所以我的意思是因为你正在开发客户端,所以你不对服务器响应负责,你的目标只是发送适当的请求。

另一方面,有HTTP响应可能触发客户端的行为。这些你想测试。例如,服务器回答301,并且您想通过发起下一个请求来测试您的客户端是否正确,并获取Location: HTTP标头值。

对于REST API(也称为超文本驱动),您的客户端将解析HTTP响应的内容,特别是链接集和/或rel关联值的内容。基于这些价值观,客户可以做出决定或向用户公开可能的选择。这些你必须测试。

如果服务器在里面没有给出里面的信息用于在客户端继续探索的HTTP响应,那么它不是REST API,而是完全有效的HTTP API。就那么简单。它变得更容易测试。没什么可做的。

相关问题