【问题标题】:Django [AssertionError: 400 != 201]Django [AssertionError: 400 != 201]
【发布时间】:2023-03-05 18:05:01
【问题描述】:

我是一个法国人,我正在研究 Django。我开始了,我有一个错误。

def setUp(self):
    self.username = 'admin'
    self.password = 'admin'
    self.datetime = 'Tue, 15 Nov 1994 08:12:31 GMT'
    self.temperature = '15.6'
    self.presence = '56'


def test_presence_post(self):
    #frame = 'presence=' + self.presence + '&datetime=2014-12-12 16:45:45'

    c = Client()
    c.login(username=self.username, password=self.password)
    response = c.post('/datapresence', {'presence=' + self.presence + '&datetime=2014-12-12 16:45:45'}, 
        content_type="application/x-www-form-urlencoded", HTTP_DATE=datetime)
    self.assertEqual(response.status_code, 201)

我的错误:
self.assertEqual(response.status_code, 201) 断言错误:400 != 201

如果我使用 Advanced Rest Client,可以使用带有 url 和数据的 POST 请求。

非常感谢。

【问题讨论】:

  • 您在哪里创建您尝试在测试数据库中进行身份验证的管理员用户?
  • 400 暗示错误请求。您的数据似乎格式不正确。只需检查发送到datapresence 视图的帖子字典的格式
  • @GarryCairns 我的设置不在我创建用户的地方?
  • @karthikr 我的数据存在表单类 dataPresenceForm(forms.Form): datetime = forms.DateTimeField() presence = forms.IntegerField()
  • 其实这样就好了。我要求你检查视图中的request.POST 字典

标签: python django assert http-status-code-400


【解决方案1】:

{'presence=' + self.presence + '&datetime=2014-12-12 16:45:45'} 是一个只有一个键且没有值的集合,而不是post() 所期望的字典。应该是{'presence': self.presence, 'datetime':'2014-12-12 16:45:45'}。服务器检测到无效请求并返回 400。

我也会尝试不使用content_type="application/x-www-form-urlencoded", HTTP_DATE=datetime,默认值至少应该和提供的一样好。

【讨论】:

  • 没有我的价值观,我有这个:IntegrityError: NOT NULL constraint failed: IceApp_brutemesure.temperature
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 2015-06-07
  • 2019-08-27
  • 2020-09-13
  • 1970-01-01
  • 2020-07-12
  • 2019-03-19
相关资源
最近更新 更多