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,您会发现一些非常相似的东西,TestClient
和RequestFactory
。
RequestFactory 与测试客户端共享相同的 API。然而, RequestFactory 提供了一种方法,而不是像浏览器一样 生成可用作第一个参数的请求实例 到任何视图。这意味着您可以像测试视图函数一样 您将测试任何其他功能——作为一个黑盒,具有完全已知的 输入,测试特定输出。
TestClient
可让您从浏览您网站的用户的角度与您的网站进行交互(...尽管测试 javascript 是另一回事)。像这样测试您的网站时,许多事情都会发挥作用(会话、中间件、URL 路由等)。因此,这些通常是更多的集成测试,模拟真实世界与您的网站或 API 的交互。
RequestFactory
允许您以非常孤立的方式测试您的视图。您可以构建一个请求并测试您的视图,而无需设置您的 url 或关心中间件等发生的事情。
所以这更接近于典型的单元测试。
也就是说,这两种类型的测试都很有用。如果您的 API 按预期工作,我可能会开始使用 APIClient 并在处理更复杂的视图时使用 RequestFactories 来获得总体感觉。但正确的组合很大程度上取决于您的具体应用。
【讨论】:
以上是关于Django 测试休息框架:APIRequestFactory vs APIClient的主要内容,如果未能解决你的问题,请参考以下文章