我想为Django个人资料应用中的视图编写一些测试。
视图具有一些智能的错误处理逻辑。 例如,如果我们尝试创建一个配置文件,但该配置文件已存在,则只需重定向至现有的配置文件页面(或可能重定向至编辑配置文件页面)。
如何测试该错误处理是否按需工作? 什么是最佳做法?
一种想法是使用Zombie.js进行BDD,并测试我是否看到标题不是“创建个人资料”的页面(或者可能要检查我是否看到标题为“编辑个人资料”的页面)。 但是Django测试文档说:
但是,如果我要使用Django测试客户端,则可以执行以下操作:
我应该使用测试客户端,然后查看页面内容吗? 我应该看看呈现了什么模板吗? 什么是测试此视图的适当方法?
重定向和配置文件创建非常django,因此尽管您可能使用其他框架来测试JS功能,但我将为此实例使用django测试客户端。
您必须根据具体情况决定测试的范围。 时间有限,某些方面比其他方面更容易破损。 例如,我不用担心模板分辨率-200个状态码和快速检查内容的能力。
不管怎样,我将从识别视图具有的不同状态开始(我在这里猜):
如何测试该错误处理是否按需工作?
# create object with specific ID.
# post form data that should trigger your special redirect.
# ensure the redirect takes you to the model you just created via reverse
response = client.post(reverse('form_url'), {'valid_form_data': ''}, follow=True)
assertRedirects(response, reverse('view_url', args=[id]), target_status_code=200)
这将确认正确的配置文件已重定向到给定的任何数据,而您决定应触发此操作。