【问题标题】:How to unit test Django rest framework requests?如何对 Django REST 框架请求进行单元测试?
【发布时间】:2015-06-01 21:19:42
【问题描述】:

我有一个 Django-rest-framework API,我想对其进行单元测试。更具体地说,我想分别对一些数据验证方法进行单元测试。这些数据验证方法将获取一个请求作为其参数,如下所示:

def validate(request)

为了单独测试,我需要一种创建请求的方法。在 django-rest-framework 中有APIRequestFactory,可用于创建请求。主要问题是,APIRequestFactory 不会创建 django-rest-framework 使用的相同请求。相反,它将按照网站所述创建常规 django 请求:

注意:使用 APIRequestFactory 时,返回的对象是 Django 的标准 HttpRequest,而不是 REST framework 的 Request 对象,它只在视图被调用时生成。

但由于这些验证方法使用 django-rest-frameworks 请求,我无法使用 APIRequestFactory 对它们进行单元测试。有什么方法可以单独对它们进行单元测试,还是我应该只使用 APIClient,并尝试测试整个 APIView?我不想那样做,因为那样它就不是一个纯粹的单元测试。使用 APIClient,我只能得到响应,而不是请求。为什么 django-rest-framework 请求没有 APIRequestFactory?我的意思是,如果这些是 django-rest 中使用的那些,那么为什么请求工厂不生成它们呢?

【问题讨论】:

    标签: python django rest unit-testing django-rest-framework


    【解决方案1】:

    通过不将请求发送到验证方法,而是发送 request.DATA 来绕过这一点。这样,验证方法就可以根据请求独立,但仅依赖于发送给它们的数据。

    【讨论】:

    • 你能举个例子吗?我很难理解如何使用APIRequestFactory 直接测试create()update() 等这些函数
    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 2018-03-13
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 2023-03-28
    • 2016-05-29
    相关资源
    最近更新 更多