Django 视图中的 Unittest sensitive_post_parameters 装饰器
Unittest sensitive_post_parameters decorator in django view
我想在我的 django 项目中创建新用户。
我正在将 @sensitive_post_parameters 装饰器应用于该视图,以确保在出现未处理的异常或类似情况时不会记录密码(如源代码中的注释所示 https://docs.djangoproject.com/en/2.0/_modules/django/views/decorators/debug/).
当我继续测试视图时,我想确保对敏感信息的这种保护仍然存在(我没有错误地删除函数的装饰器或其他东西)。
我知道,由于装饰器应用于我的函数,我无法直接从视图测试中对其进行测试。
但是,例如,对于 @login_required 装饰器,我可以使用 assertRedirects 测试它的效果(如此处解释How to test if a view is decorated with "login_required" (Django))。
我一直在寻找一种方法来做到这一点,但找不到可行的方法。
我想到了这样的事情:
def test_senstive_post_parameters(self):
request = RequestFactory().post('create_user', data={})
my_sensitive_parameters = ['password']
self.assertEqual(
request.sensitive_post_parameters,
my_senstive_parameters
)
但这给了我一个
AttributeError: 'WSGIRequest' object has no attribute 'sensitive_post_parameters'
如有任何帮助,我们将不胜感激。
即使它告诉我我不应该尝试对此进行测试,但我真的很想测试它,因为它似乎是一个重要的行为,我应该确保保留在我的代码中,因为它稍后会被修改。
您使用 RequestFactory
创建了一个 request
,但您还没有实际使用它。要测试视图的效果,您需要导入视图并调用它。
from myapp.views import create_user
def test_senstive_post_parameters(self):
request = RequestFactory().post('create_user', data={})
response = create_user(request)
my_sensitive_parameters = ['password']
self.assertEqual(
request.sensitive_post_parameters,
my_senstive_parameters
)
我想在我的 django 项目中创建新用户。
我正在将 @sensitive_post_parameters 装饰器应用于该视图,以确保在出现未处理的异常或类似情况时不会记录密码(如源代码中的注释所示 https://docs.djangoproject.com/en/2.0/_modules/django/views/decorators/debug/).
当我继续测试视图时,我想确保对敏感信息的这种保护仍然存在(我没有错误地删除函数的装饰器或其他东西)。
我知道,由于装饰器应用于我的函数,我无法直接从视图测试中对其进行测试。
但是,例如,对于 @login_required 装饰器,我可以使用 assertRedirects 测试它的效果(如此处解释How to test if a view is decorated with "login_required" (Django))。
我一直在寻找一种方法来做到这一点,但找不到可行的方法。
我想到了这样的事情:
def test_senstive_post_parameters(self):
request = RequestFactory().post('create_user', data={})
my_sensitive_parameters = ['password']
self.assertEqual(
request.sensitive_post_parameters,
my_senstive_parameters
)
但这给了我一个
AttributeError: 'WSGIRequest' object has no attribute 'sensitive_post_parameters'
如有任何帮助,我们将不胜感激。 即使它告诉我我不应该尝试对此进行测试,但我真的很想测试它,因为它似乎是一个重要的行为,我应该确保保留在我的代码中,因为它稍后会被修改。
您使用 RequestFactory
创建了一个 request
,但您还没有实际使用它。要测试视图的效果,您需要导入视图并调用它。
from myapp.views import create_user
def test_senstive_post_parameters(self):
request = RequestFactory().post('create_user', data={})
response = create_user(request)
my_sensitive_parameters = ['password']
self.assertEqual(
request.sensitive_post_parameters,
my_senstive_parameters
)