【问题标题】:Django Response has no content - How to debug?Django 响应没有内容 - 如何调试?
【发布时间】:2015-09-18 04:59:13
【问题描述】:

我正在尝试向我的 Django 1.8 应用程序添加测试,但在进行测试以确保注册成功时遇到了麻烦。不知道怎么调试看看有什么问题。

设置客户端后,我在代码中进行了以下调用。

class LoginTests(TestCase):
    def setUp(self):
        self.client = Client()

    def test_user_can_select_vegetarian_on_account_create(self):

        data = {'username': 'TestUser', 'password1':'pass', 'password2':'pass', 'email':'bad@email.com', 'is_admin':True}
        r = self.client.post('/register/', data)
        print(r.content)
        self.assertTrue(r.context is not None)
    print(list(User.objects.all()))

print(r.content) 只是打印一个空白,所以没有任何内容返回,尽管它是一个响应。当我查看状态码时,我得到一个 302。

我不确定如何查看出了什么问题,所以我主要是在查看如何调试此过程。服务器代码中的打印语句没有显示出来,所以我完全不知道发生了什么。有什么想法吗?

【问题讨论】:

  • 我还应该说我已经通过使用-v 1 调用测试仪来打印服务器端打印件,但我仍然无法弄清楚出了什么问题。
  • 我猜 302 应该告诉浏览器向给定的 URL 发出另一个请求,所以一切都按预期工作?浏览器不会返回另一个页面 - 它告诉客户端发出另一个请求。有人可以确认吗?
  • @TheGeorgeous 不,我还没有使用过。我也试试。

标签: python django unit-testing testing python-3.4


【解决方案1】:

302 状态码表示重定向,如果要查看该重定向的内容,必须添加“follow=True”:

response = self.client.post('/register/', data, follow=True)

https://docs.djangoproject.com/en/1.8/topics/testing/tools/

顺便说一句...为了调试正在发生的事情,我建议您使用像 PyCharm 这样的 IDE,您可以在其中添加断点并逐步执行代码!

【讨论】:

  • 无需使用 ide 进行调试。您可以使用pdb 在控制台中完美完成。
  • 是的,但 IDE 更简单、功能丰富且用户友好;)
猜你喜欢
  • 1970-01-01
  • 2015-09-25
  • 2016-08-04
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 2012-02-03
  • 1970-01-01
相关资源
最近更新 更多