Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django测试rest框架:APIRequestFactory与APIClient_Django_Rest_Unit Testing_Django Rest Framework - Fatal编程技术网

Django测试rest框架:APIRequestFactory与APIClient

Django测试rest框架:APIRequestFactory与APIClient,django,rest,unit-testing,django-rest-framework,Django,Rest,Unit Testing,Django Rest Framework,作为测试新手,我希望在Django(Django rest框架)中测试我的API 我正在为我的视图(即API端点)设置测试。现在查看文档,我可以使用APIRequestFactory或APIClient。两者似乎做了同样的事情 这两者之间有什么区别,为什么/什么时候我应该使用其中一个呢?如果你看一下,你会发现一些非常相似的东西,和 RequestFactory与测试客户端共享相同的API。然而, RequestFactory提供了一种 生成可以用作第一个参数的请求实例 任何观点。这意味着您可以使

作为测试新手,我希望在Django(Django rest框架)中测试我的API

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

这两者之间有什么区别,为什么/什么时候我应该使用其中一个呢?

如果你看一下,你会发现一些非常相似的东西,和

RequestFactory与测试客户端共享相同的API。然而, RequestFactory提供了一种 生成可以用作第一个参数的请求实例 任何观点。这意味着您可以使用与测试相同的方法测试视图函数 您可以测试任何其他函数–作为一个黑匣子,使用完全已知的 输入,测试特定输出

TestClient
允许您从浏览站点的用户的角度与站点进行交互(尽管测试Javascript是另一回事)。在测试您的站点时,很多事情都会起作用(会话、中间件、URL路由等)。因此,这些通常是更具集成性的测试,模拟真实世界中与站点或API的交互

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

也就是说,这两种类型的测试都很有用。如果您的API按照预期工作,为了获得一般的感觉,我可能会开始使用ApicClient,并在涉及更复杂的视图时使用RequestFactorys。但是正确的混合很大程度上取决于你的具体应用