如何在Django中测试

时间:2016-10-04 21:00:05

标签: python django django-testing

我正在尝试对Django进行我的第一次测试,我不知道这样做或者在阅读文档之后(它解释了一个非常简单的测试)我仍然不知道它是怎么做的。

我正在尝试进行“登录”网址的测试并进行登录,并在成功登录后重定向到授权页面。

richTextBox.SelectionAlignment = HorizontalAligment.Center;

测试成功,但我不知道是否因为加载了“/ login /”200或者因为测试进行了登录而且重定向后获得了200个代码。

如何检查测试,登录后网址重定向是正确的?有一个插件或什么有助于测试?或者我可以在哪里找到一个很好的教程来测试我的观点和模型?

谢谢和问候。

2 个答案:

答案 0 :(得分:1)

Django有很多测试工具。对于此任务,您应该使用Django中的测试用例类,例如django.test.TestCase。 然后,您可以使用方法assertRedirects(),它会检查您重定向的位置以及使用的代码。您可以找到所需的任何信息here。 我已经尝试为您的任务编写代码:

from django.test import TestCase

class Test(TestCase):
    def test_login(self):
        data = {'X-OpenAM-Username': 'user', 'X-OpenAM-Password': 'password'}
        response = client.post('/login/', data=data, content_type='application/json', secure=false)
        assertRedirects(response, '/expected_url/', 200)

然后您可以使用python3 manage.py test来运行所有测试。

答案 1 :(得分:1)

要正确测试重定向,请使用follow参数

  

如果您将follow设置为True,则客户端将遵循任何重定向和a   redirect_chain属性将在包含的响应对象中设置   中间网址和状态代码的元组。

然后你的代码就像

一样简单

来自django.test import TestCase

class Test(TestCase):
    def test_login(self):
        client = Client()
        headers = {'X-OpenAM-Username': 'user', 'X-OpenAM-Password': 'password', 'Content-Type': 'application/json'}
        data = {}
        response = client.post('/login/', headers=headers, data=data, secure=False)
        self.assertRedirects(response,'/destination/',302,200)

请注意,它是self.assertRedirects而不是assertassertRedirects

另请注意,上述测试很可能会因为您将空字典作为表单数据发布而失败。当表单无效时,Django表单视图不会重定向,而空表单在这里可能无效。