我正在尝试对Django进行我的第一次测试,我不知道这样做或者在阅读文档之后(它解释了一个非常简单的测试)我仍然不知道它是怎么做的。
我正在尝试进行“登录”网址的测试并进行登录,并在成功登录后重定向到授权页面。
richTextBox.SelectionAlignment = HorizontalAligment.Center;
测试成功,但我不知道是否因为加载了“/ login /”200或者因为测试进行了登录而且重定向后获得了200个代码。
如何检查测试,登录后网址重定向是正确的?有一个插件或什么有助于测试?或者我可以在哪里找到一个很好的教程来测试我的观点和模型?
谢谢和问候。
答案 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
而不是assert
或assertRedirects
另请注意,上述测试很可能会因为您将空字典作为表单数据发布而失败。当表单无效时,Django表单视图不会重定向,而空表单在这里可能无效。