ada*_*ish 5 python django permissions client unit-testing
我正在为我的视图编写详细的功能测试,以补充我的模型上的单元测试.这是一个Django项目,我正在使用内置的Django测试框架和unittest.显然,检查这些功能测试的重要一点是权限设置正确.考虑到这一点,我正在尝试这样的事情:
anonclient = Client()
userclient = Client()
userclient.login(username='test_user', password='test')
adminclient = Client()
adminclient.login(username='test_admin', password='test')
path = "/path/to/my/page"
anonresponse = anonclient.get(path)
userresponse = userclient.get(path)
adminresponse = adminclient.get(path)
Run Code Online (Sandbox Code Playgroud)
我需要能够确认在adminclient正常工作时,anonclient和userclient都被拒绝了.Howerver,我无法找到一个方法来测试,这已经发生了强劲!
起初我决定检查响应是否为302重定向(因为重定向失败权限检查的副作用),但这意味着无法区分自动重定向用户的功能和失败的权限检查之间的区别.(我不能只使用self.assertRedirects(response,url),因为目标url可以通过视图中的permission_required装饰器的login_url参数覆盖!)
也许我应该考虑扩展user_passes_test装饰器,以便在测试失败时向响应对象添加属性?然后可以在测试中检查这一点.如果失败,我将通过检查请求的副作用是否已经发生来确定请求是否成功.这样做会起作用,但是会非常长时间啰嗦,特别是在完成大量这些检查的情况下.
我无法想象我是第一个遇到这个问题的人,处理这个问题的正确方法是什么,或者我错过了什么?
非常感谢!
当你调用login方法时,django测试客户端会返回一个boolean,它告诉你登录是否成功。
[17] >>> from django.test import Client
[18] >>> c = Client()
[19] >>> c.login(username='superuser', password='bar')
[19] : False
[20] >>> c.login(username='superuser', password='correct_password')
[20] : True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1257 次 |
| 最近记录: |