如何针对不可靠的服务器对REST客户机进行单元测试?

2024-04-26 22:41:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为一个仍在开发中的第三方服务制作一个基于Python的REST客户机。问题是测试/验证客户机是否可以在各种场景下工作。包括不正确的回答。在

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

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

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

响应={"value1":34,"value2":"a string"}

我需要自己为以下单元编写测试用例-

  • 客户端发送正确数量的参数
  • 客户端发送错误的参数值
  • 客户端缺少参数
  • 服务器对上述场景的正确响应
  • 服务器未发回所有必需的值
  • 服务器混淆了值参数(返回字符串而不是数字)
  • 服务器发回HTML而不是JSON
  • 。。。等等

所有这些广泛测试背后的目的是帮助识别错误的来源。i、 是我的客户端出了问题,还是第三方服务器出了问题?在

有没有人知道组织Python测试套件以适应这些场景的好方法?编写单元测试函数感觉像是一项永无止境的任务。。。:(


Tags: 服务器rest客户端参数get客户机远程错误
1条回答
网友
1楼 · 发布于 2024-04-26 22:41:01

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

请注意,HTTP是一个应用程序级协议,其中客户机总是启动请求,而服务器只是响应。所以我的意思是,因为你在开发客户机,你不负责服务器响应。你的目标只是发送适当的请求。在

另一方面,有HTTP响应可能会触发客户端的行为。你要测试的这些。例如,服务器回答301,您想通过启动下一个请求,获取Location:HTTP报头值来测试客户机是否执行了正确的操作。在

在restapi(也称为超文本驱动)的情况下,您的客户机将解析HTTP响应的内容,特别是一组链接和/或rel关联值。基于这些值,客户机可以做出决定或向用户公开可能的选择。这些你必须测试。在

如果服务器没有提供内部的信息HTTP响应来继续您在客户端的探索,那么它就不是一个RESTAPI,而是一个完全有效的HTTPAPI。就这么简单。它变得更容易测试。没什么事可做。在

相关问题 更多 >