【发布时间】:2019-07-09 00:27:42
【问题描述】:
我正在构建一个 rest api,我正在为 api 制作路线并偶然发现了一个问题。我正在使用flask restplus来构建api和marshmallow来验证客户端发送的json。
我的设计:我使用一个装饰器来包装每个 api 路由。此装饰器根据棉花糖模式验证客户端发送的 json,如果 json 验证,则装饰器让 api 路由运行。否则,如果在检查模式时 json 无效,它会在不运行路由的情况下将在使 json 无效时返回的错误返回给客户端。
我真的很喜欢这种设计,因为它显着减少了代码重复,它可以自动验证和无效客户端发布的数据,而无需我在每个 api 路由中做几乎相同的事情——检查客户端发送的 json,然后运行路线。
我唯一的问题是我不知道如何单元测试这个。我已经为特定的棉花糖 json 模式编写了测试,以检查在将无效数据传递给它们时它们是否会引发正确的验证错误。但是,现在我需要测试 api 路由以检查它们是否返回模式引发的验证错误。这似乎是单元测试的大量重复,因为我在测试架构时检查相同的错误,并在测试 api 路由/装饰器时再次检查。
因此,你们对我应该如何进行单元测试有什么建议吗?我应该专门测试 api 路由、单独测试装饰器和单独测试模式吗?或者我应该只测试 api 路由以检查它们是否返回了架构引发的正确错误?
提前致谢。
【问题讨论】:
标签: python unit-testing flask python-decorators marshmallow