如何在Django测试用例中获得测试HTTP请求?

问题描述

我在仅使用GraphQL API的解决方案中工作,所以我的所有逻辑都采用表格形式。我的表单之一的save方法接收到http请求。我使用请求来获取一些用于邮寄的数据。因此,我正在尝试制作这种形式的测试用例,但我不知道如何传递请求对象。

class SignUpForm(forms.ModelForm):
  ...
  def save(self,request,*args,**kwargs):
    ...

如何在测试案例中将请求对象传递给表单?

解决方法

您可以实例化HttpRequest并将其用作测试中的常规请求:

    fake_request = HttpRequest()
    fake_request.user = AnonymousUser()
    fake_request.META['SERVER_NAME'] = site.domain
    fake_request.META['SERVER_PORT'] = 80

    s = SessionStore()
    s.create()
    fake_request.session = s

根据您的情况,您可能需要填写更多字段