Django 测试休息框架:APIRequestFactory vs APIClient

Posted

技术标签:

【中文标题】Django 测试休息框架:APIRequestFactory vs APIClient【英文标题】:Django testing rest-framework: APIRequestFactory vs APIClient 【发布时间】:2015-11-15 04:33:42 【问题描述】:

作为测试新手,我希望在 Django (Django-rest-framework) 中测试我的 API。

我正在为我的视图(即我的 API 端点)设置测试。现在查看文档,我可以使用 APIRequestFactory 或 APIClient。两者似乎都在做同样的事情。

这两者有什么区别,为什么/何时应该使用其中一个?

【问题讨论】:

【参考方案1】:

如果您查看tools and helpers for testing "standard" views in Django,您会发现一些非常相似的东西,TestClientRequestFactory

RequestFactory 与测试客户端共享相同的 API。然而, RequestFactory 提供了一种方法,而不是像浏览器一样 生成可用作第一个参数的请求实例 到任何视图。这意味着您可以像测试视图函数一样 您将测试任何其他功能——作为一个黑盒,具有完全已知的 输入,测试特定输出。

TestClient 可让您从浏览您网站的用户的角度与您的网站进行交互(...尽管测试 javascript 是另一回事)。像这样测试您的网站时,许多事情都会发挥作用(会话、中间件、URL 路由等)。因此,这些通常是更多的集成测试,模拟真实世界与您的网站或 API 的交互。

RequestFactory 允许您以非常孤立的方式测试您的视图。您可以构建一个请求并测试您的视图,而无需设置您的 url 或关心中间件等发生的事情。 所以这更接近于典型的单元测试。

也就是说,这两种类型的测试都很有用。如果您的 API 按预期工作,我可能会开始使用 APIClient 并在处理更复杂的视图时使用 RequestFactories 来获得总体感觉。但正确的组合很大程度上取决于您的具体应用。

【讨论】:

以上是关于Django 测试休息框架:APIRequestFactory vs APIClient的主要内容,如果未能解决你的问题,请参考以下文章

Django 休息框架问题

Django 休息框架。更新嵌套对象

oTree 中的 Django 休息框架

markdown django休息框架过滤器

无法登录 Angular2 / Django 休息框架

Django - 带有休息框架的数据表ajax错误