测试包裹API路线的装饰器



我正在构建一个REST API,我正在为API做路线,并偶然发现了问题。我正在使用烧瓶Restplus构建API和棉花糖来验证客户发送的JSON。

我的设计:我使用用于包装每条API路线的装饰器。该装饰员验证了客户对棉花糖模式发送的JSON,如果JSON验证,则装饰器可以让API路线运行。否则,如果JSON在针对模式检查时将其无效,则它将返回将JSON无效回到客户端而无需运行路线时遇到的错误。

我真的很喜欢这种设计,因为它大大降低了代码的重复,它可以自动验证和无效客户端发布的数据,而我在每个API路线中都做几乎相同的事情 - 检查客户端发送的JSON,然后运行路线。

我唯一的问题是我不知道如何单位对此进行测试。我已经为特定的棉花糖JSON模式书写了测试,以检查它们是否将无效数据传递给它们时会引起正确的验证错误。但是,现在我需要测试API路由以检查它们是否返回图式示例提出的验证错误。这似乎是单位测试的大量重复,因为我在测试模式时会检查相同的错误,并且在我测试API路由/装饰器时再次检查。

因此,你们是否有任何建议我应该如何对此进行测试。我是否应该专门测试API路线,装饰器和模式分开测试?还是我应该仅测试API路由以检查它们返回架构引起的正确错误?

预先感谢。

这可能是一个意见问题。

我认为测试所有模式是没有用的,除非它们包含一些自定义代码,例如自定义字段,验证器等。因此,无需测试棉花糖本身,因为它已经被其自己的测试广泛介绍。因此,测试棉花糖架构只能达到检查您输入正确的字段名称和验证器的目的。恕我直言,那将是详尽的。

我将测试装饰器:创建一个虚拟测试路线,装饰它,检查正确的错误。

确定是否值得测试各种错误的所有路线取决于您。只要对装饰器进行测试,测试路线只需检查装饰器是否使用正确的模式应用于路线。

有些人会争辩说,相反,他们只关心API本身,只需要测试路线即可。但这意味着测试所有路线上的所有情况,因此这是很多重复。而且我认为这不符合单位测试,而是集成测试

请注意,您可以尝试使用Webargs(由Marshmallow团队维护)来替换您的装饰器,但我不知道整合到Flask-Restplus是多么容易。

相关内容

  • 没有找到相关文章

最新更新