通用烧瓶端点代码的设计和测试

时间:2019-08-03 09:46:00

标签: python unit-testing flask design-patterns flask-restful

我正在尝试重构一些用于处理端点的代码,而我一直在努力获得良好的设计(也很容易测试)。

让我说我有这个端点基类:

class BaseResource(flask.Resource):
def dispatch_request(self, *args, **kwargs):
    try:
        with memory_logged_scope(), time_logged_scope():
            return super(BaseResource, self).dispatch_request(*args, **kwargs)
    except Exception as e:
        handle_endpoint_error(e, self.__class__.__name__)

提供日志记录功能和时间。

某些派生类将是:

class DerivedResource(BaseResource):
    def post(self):
        do_some_logic...

此外,我有一些代码“包装”(不知道确切的单词)一个端点,可以说已经发送了一个文件,因此该代码可以执行以下操作:

file_sent = request.files[0]
temp_file = write_to_temp_file(file_sent)
try:
    call somehow to the endpoint logic
finally:
    close(file_sent, temp_file)

像这个功能一样,我还有更多的“包装器”。 我不想在端点代码上显式地编写此代码,以便我可以轻松对其进行测试。

我看到了@ app.before_request,但是所有请求都会发生这种情况,我可以在一个请求上写它以“将其列入白名单”。

对于这种情况的设计建议,我将感到非常高兴,谢谢!

0 个答案:

没有答案