我有一个带有表单的 Django 视图,我将在单元测试中发布到该表单。这是测试的一般结构:
class ViewTests(TestCase):
form_url = reverse_lazy('myapp:form')
success_url = reverse_lazy('myapp:success')
def test_form_submission_with_valid_data_creates_new_object_and_redirects(self):
attributes = EntryFactory.attributes()
attributes['product'] = ProductFactory() # Entry has a ForeignKey to Product
response = self.client.post(self.form_url, attributes, follow=True)
self.assertEqual(response.status_code, 200)
self.assertRedirects(response, self.success_url)
self.assertTemplateUsed(response, 'myapp/success.html')
但是,我似乎无法弄清楚为什么重定向没有按预期工作。我试过加入 aimport pdb; pdb.set_trace()
看看是否有任何表单错误(response.context['form'].errors
),但我得到的只是一个空字典。在浏览器中提交表单会正确重定向,所以我不确定单元测试为什么失败,也不确定如何正确调试它,因为表单错误字典中没有显示任何错误。