正在测试 REST 访问 necessary/good?
Is testing for REST access necessary/good?
我已经使用 django-rest-framework 进行了休息 API。
我有多个 API 端点。有些用于创建对象,有些用于列出对象,有些用于获取对象的计数等。
在我的测试中,我测试每个端点以确保,比如说,创建端点将只接受 POST 请求。我测试列表端点以确保它们只接受 GET,而不是 POST/PUT/PATCH/DELETE。每个端点对应一个视图,该视图具有确定它们允许哪些请求的设置,但测试确保这些设置有效。测试主要断言返回了某个状态代码。
测试非常重复。注释 API 的测试大约有 600 行。这种测试是否有必要,and/or是否有简化的替代方案?
在编写冗余测试和为系统的关键区域获得足够的代码覆盖率之间总是会有一个很好的平衡。
由于您应用中的端点很可能有很多移动部分(即 response/request 解析、HTTP 调用、访问数据存储等),您可能会发现太多测试会显着降低速度下载你的测试套件。
您经常会发现,结合大量标准单元测试(没有 i/o),少量有针对性的端到端测试就足够了。
关键是在关键代码覆盖率和测试套件的可靠性能之间找到健康的平衡。
有一个很棒的 Stack Overflow 主题,其中 Kent Beck 讨论了一个高效的测试套件:
How deep are your unit tests?
这属于测试反模式类别,您在其中测试 framework/library 而不是您自己的代码。
像这样的一些测试是值得的,尤其是当您不熟悉该框架时,它们可以用来验证您对它的使用。但是,详尽地测试它是一种浪费,否则您可能会花在测试应用程序代码上。
如果你真的觉得一个框架或库不可靠,你仍然想使用它,你最好直接测试它,即 fork 项目(假设它是开源的),添加一些测试,然后提出拉取请求。
我偶然发现了这个很酷的库:django-rest-assured,它似乎减少了测试这种 REST 访问的大量样板。这使得测试该功能变得更加微不足道,甚至值得您花时间。
我已经使用 django-rest-framework 进行了休息 API。
我有多个 API 端点。有些用于创建对象,有些用于列出对象,有些用于获取对象的计数等。
在我的测试中,我测试每个端点以确保,比如说,创建端点将只接受 POST 请求。我测试列表端点以确保它们只接受 GET,而不是 POST/PUT/PATCH/DELETE。每个端点对应一个视图,该视图具有确定它们允许哪些请求的设置,但测试确保这些设置有效。测试主要断言返回了某个状态代码。
测试非常重复。注释 API 的测试大约有 600 行。这种测试是否有必要,and/or是否有简化的替代方案?
在编写冗余测试和为系统的关键区域获得足够的代码覆盖率之间总是会有一个很好的平衡。
由于您应用中的端点很可能有很多移动部分(即 response/request 解析、HTTP 调用、访问数据存储等),您可能会发现太多测试会显着降低速度下载你的测试套件。
您经常会发现,结合大量标准单元测试(没有 i/o),少量有针对性的端到端测试就足够了。 关键是在关键代码覆盖率和测试套件的可靠性能之间找到健康的平衡。
有一个很棒的 Stack Overflow 主题,其中 Kent Beck 讨论了一个高效的测试套件:
How deep are your unit tests?
这属于测试反模式类别,您在其中测试 framework/library 而不是您自己的代码。
像这样的一些测试是值得的,尤其是当您不熟悉该框架时,它们可以用来验证您对它的使用。但是,详尽地测试它是一种浪费,否则您可能会花在测试应用程序代码上。
如果你真的觉得一个框架或库不可靠,你仍然想使用它,你最好直接测试它,即 fork 项目(假设它是开源的),添加一些测试,然后提出拉取请求。
我偶然发现了这个很酷的库:django-rest-assured,它似乎减少了测试这种 REST 访问的大量样板。这使得测试该功能变得更加微不足道,甚至值得您花时间。