刚接触测试我想在Django(Django-rest-framework)中测试我的API。
我正在为我的观点设置测试,这是我的API端点。现在查看文档,我可以使用APIRequestFactory或APIClient。两者似乎都做同样的事情。
这两者之间有什么区别,为什么/何时应该使用其中一种?
答案 0 :(得分:26)
如果您查看tools and helpers for testing "standard" views in Django,您会发现一些非常类似的内容,TestClient
和RequestFactory
。
RequestFactory与测试客户端共享相同的API。然而, RequestFactory提供了一种方式,而不是像浏览器一样 生成可用作第一个参数的请求实例 任何观点。这意味着您可以像测试视图功能一样 你会测试任何其他功能 - 作为一个黑盒子,完全知道 输入,测试特定输出。
TestClient
允许您从浏览网站的用户的角度与您的网站进行互动(...虽然测试Javascript是另一个故事)。在测试您的网站时会有很多事情发生(Sessions,Middlewares,URL-Routing等)。因此,这些通常是更多的集成测试,模仿真实世界与您的网站或API的互动。
RequestFactory
允许您以非常孤立的方式测试您的观看次数。您可以构建请求并测试您的视图,而无需设置您的URL或关心中间件等中发生的事情。
所以这更接近于典型的单元测试。
也就是说,两种类型的测试都很有用。为了大致了解您的API是否按预期工作,我可能会开始使用APIClient,并在涉及更复杂的视图时使用RequestFactories。但正确的组合在很大程度上取决于您的具体应用。